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);
    }

}