C# 是否有任何方法可以绘制位图,但只能绘制位图像素,而不能绘制周围的矩形?
我有这个方法:C# 是否有任何方法可以绘制位图,但只能绘制位图像素,而不能绘制周围的矩形?,c#,.net,winforms,C#,.net,Winforms,我有这个方法: private Image Lighter(Image imgLight, int level, int nRed, int nGreen, int nBlue) { if (changeImageColor == true) { Graphics graphics = Graphics.FromImage(imgLight); int conversion = (5 * (level - 50));
private Image Lighter(Image imgLight, int level, int nRed, int nGreen, int nBlue)
{
if (changeImageColor == true)
{
Graphics graphics = Graphics.FromImage(imgLight);
int conversion = (5 * (level - 50));
Pen pLight = new Pen(Color.FromArgb(conversion, nRed,
nGreen, nBlue), imgLight.Width * 2);
graphics.DrawLine(pLight, -1, -1, imgLight.Width, imgLight.Height);
graphics.Save();
graphics.Dispose();
}
return imgLight;
}
然后在计时器滴答声事件中:
changeImageColor = true;
img = Lighter(img, x++, colToFadeTo.R, colToFadeTo.G, colToFadeTo.B);
if (x < 55)
{
this.Invalidate();
}
第一次运行程序时,我看到bmp:
然后用打火机的方法画出图像,我看到:
当它绘制img时,它会绘制一个矩形a和位图。是否只在位图/图像上绘制/pint,而不是像这样在周围绘制?我可能误解了这个问题,但bmp不支持透明胶片。不管是哪种方式,你都会得到一个矩形图像,这只是一个使背景透明或与表单其余部分的颜色相同的问题。winforms不支持透明。您正在寻找WPF。位图对象当然支持透明度。Winforms也是如此<代码>不透明度和
透明度键
就是出于这个原因而存在的。不过,与WPF相比,它确实需要更多的处理。问题是,位图源没有透明背景。从那开始,它应该保持透明,即使在图像的其余部分变亮后看起来像是在同一个位图上不断绘制。代码不完整,因为计时器事件正在使用img变量、绘画事件和bmp变量。位图bmp=新位图();bmp.MakeTransparent()或bmp.MakeTransparent(颜色)
private void Form1_Paint(object sender, PaintEventArgs e)
{
if (changeImageColor == false)
{
e.Graphics.DrawImage(bmp, 0, 0, 50, 50);
}
else
{
e.Graphics.DrawImage(img, 0, 0, 50, 50);
}
}