Mar*_*k T 86 .net c# gdi+ pixel winforms
我试图打开Windows窗体上的单个像素.
graphics.DrawLine(Pens.Black, 50, 50, 51, 50); // draws two pixels
graphics.DrawLine(Pens.Black, 50, 50, 50, 50); // draws no pixels
Run Code Online (Sandbox Code Playgroud)
API真的应该有一个方法来设置一个像素的颜色,但我没有看到一个.
我正在使用C#.
Hen*_*man 110
这将设置一个像素:
e.Graphics.FillRectangle(aBrush, x, y, 1, 1);
Run Code Online (Sandbox Code Playgroud)
Ada*_*son 17
该Graphics对象没有这个,因为它是一个抽象,可以用来覆盖矢量图形格式.在这种情况下,设置单个像素是没有意义的.该Bitmap图像格式确实有GetPixel()和SetPixel(),但没有一个图形对象建立在一个.对于您的场景,您的选项看起来确实是唯一的选项,因为没有一种通用的方式为一般图形对象设置单个像素(并且您不完全知道它是什么,作为您的控件/表单可以是双缓冲等等)
为什么需要设置单个像素?
Woo*_*DRN 17
只是为了显示Henk Holterman的完整代码答案:
Brush aBrush = (Brush)Brushes.Black;
Graphics g = this.CreateGraphics();
g.FillRectangle(aBrush, x, y, 1, 1);
Run Code Online (Sandbox Code Playgroud)
在我绘制大量单个像素的地方(对于各种自定义数据显示),我倾向于将它们绘制到位图然后将其blit到屏幕上.
Bitmap GetPixel和SetPixel操作并不是特别快,因为它们进行了大量的边界检查,但是很容易制作一个可以快速访问位图的"快速位图"类.