【发布时间】:2017-03-10 03:28:05
【问题描述】:
我要做的是在事件发生后将所有箭头图片设置为紫色。
首先我用箭头列出所有图片框:
List<PictureBox> arrows = new List<PictureBox>();
foreach (var item in Controls.OfType<PictureBox>())
{
if (item.Name.StartsWith("arrow"))
{
arrows.Add(item);
}
}
这是我用来为图片着色的代码:
System.Drawing.Color purple = System.Drawing.Color.Purple;
foreach (var item in arrows)
{
Bitmap bmp = new Bitmap(item.Image, item.Height, item.Width);
for (int i = 0; i < item.Height; i++)
{
for (int j = 0; j < item.Width; j++)
{
var actualColor = bmp.GetPixel(i, j).ToArgb();
var purpleA = bmp.GetPixel(i, j).A;
if (actualColor != System.Drawing.Color.White.ToArgb())
{
bmp.SetPixel(i, j, System.Drawing.Color.FromArgb(purpleA, purple));
} else
{
bmp.SetPixel(i, j, System.Drawing.Color.FromArgb(actualColor));
}
}
}
item.Image = bmp;
}
如何准确地为图像着色?目前紫色画得很差。我需要它与黑色箭头完全相同,但我需要它是紫色而不是黑色。
注意:我将黑色箭头图像放入图片框时调整了它的大小,因此在表格中黑色和紫色箭头的大小相同。我上传了带有屏幕截图的紫色箭头,黑色箭头来自我的电脑。这就是它们大小不同的原因。
【问题讨论】:
-
你到底是什么意思?真正的问题在哪里?
-
我发布了图片。看看紫色画得有多糟糕。我需要箭头完全相同,但我需要的是紫色而不是黑色。
-
Alpha 通道一定有问题。尝试将红色绿色和蓝色部分与255进行比较,则为白色。
-
jpeg 和 png 有区别吗?我现在将图像保存为 .png。图片的背景应该是白色的。但是当我使用
if (actualColor != 255)时,我会将整个图像染成紫色。甚至是白色的部分。