C#怎么填充窗口上的一个像素点啊?
答案:2 悬赏:0 手机版
解决时间 2021-03-17 00:59
- 提问者网友:兔牙战士
- 2021-03-16 12:37
比如对窗口上的点(x,y),将其设置为红色,我试了用画半径为1或2的圆,但是效果不好,速度慢!有没有其他方法啊?
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-03-16 14:03
可以尝试填充
Graphics gra = this.CreateGraphics();
Brush bush = new SolidBrush(Color.Red);//填充的颜色
gra.FillEllipse(bush, 10, 10, 100,100);//画椭圆的方法,x坐标、y坐标、宽、高(直径)
Graphics gra = this.CreateGraphics();
Brush bush = new SolidBrush(Color.Red);//填充的颜色
gra.FillEllipse(bush, 10, 10, 100,100);//画椭圆的方法,x坐标、y坐标、宽、高(直径)
全部回答
- 1楼网友:鱼忧
- 2021-03-16 14:37
///
/// 以黑白效果显示图像
///
///
///
public image blackwhite(image image)
{
//
try
{
int height = image.height;
int width = image.width;
bitmap newbitmap = new bitmap(width, height);
bitmap oldbitmap = (bitmap)image;
color pixel;
for (int x = 0; x < width; x++)
for (int y = 0; y < height; y++)
{
pixel = oldbitmap.getpixel(x, y);
int r, g, b, result = 0;
r = pixel.r;
g = pixel.g;
b = pixel.b;
//实例程序以加权平均值法产生黑白图像
int itype = 2;
switch (itype)
{
case 0://平均值法
result = ((r + g + b) / 3);
break;
case 1://最大值法
result = r > g ? r : g;
result = result > b ? result : b;
break;
case 2://加权平均值法
result = ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b));
//convert.toint32((double)(((0.3 * c.r) + (0.59 * c.g)) + (0.11 * c.b)));
break;
}
newbitmap.setpixel(x, y, color.fromargb(result, result, result));
}
return newbitmap;
}
catch (exception ex)
{
return image;
}
}
参考一下吧
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯