我有一个屏幕外的BufferedImage,用这种类型构建BufferedImage.TYPE_INT_ARGB.它可以包含任何东西,我正在寻找一种方法(相当有效地)用透明像素完全覆盖图像,从而产生"隐形"图像.
使用这样的东西:
(bufimg.getGraphics()).setColor(new Color(10, 10, 100, 0));
(bufimg.getGraphics()).fillRect (0, 0, x, y);
Run Code Online (Sandbox Code Playgroud)
没有效果.一种可能的方法可能只是写入BufferedImage中的每个像素,但我不确定这是最好的解决方案.你会怎么做?
[edit]
图形文档建议不要将clearRect用于屏幕外图像,但我尝试使用与上面相同的结果.
[edit2]
在尝试使用MeBigFatGuy的代码后(谢谢!),它确实清除了图像.但它也停止进一步绘制到该图像(或似乎).这段代码例如:
BufferedImage img = new BufferedImage (600, 600, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.createGraphics ()
g.drawLine (100, 100, 500, 500);
AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f);
g.setComposite(composite);
g.setColor(new Color(0, 0, 0, 0));
g.fillRect(0, 0, 600, 600);
graphicsAI.setColor(new Color (10, 10, 10, 255));
graphicsAI.drawLine (100, 100, 500, 500);
Run Code Online (Sandbox Code Playgroud)
结果没有在图像上看到(我正在将图像绘制到JPanel).这是否与添加alpha值有关?
C++:从函数,返回类型或引用中使用和返回字符数组?我正在尝试在函数外部创建一个以空字符结尾的字符串,然后运行一个将为其分配一些数据的函数.例如,char abc [80]创建于main. input()然后运行,它将返回用户输入abc.我认为这两个显而易见的方法是:
1.使输入函数将输入返回到main中的变量,如:
char input ()
{
char input [80];
getline(cin, choice);
return input;
}
int main ()
{
char choice [80];
choice = input ();
...
}
Run Code Online (Sandbox Code Playgroud)
2.将字符数组传递给我的引用输入函数,然后从那里将数据放入其中:
...
void input (&variable)
{
getline(*variable, cin);
return;
}
int main ()
{
char choice [80];
char* pointer;
input (pointer);
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法通过这些方式获得工作.那么,我做错了什么,我该如何解决呢?