请问在visual c++环境下画点的函数是哪个?
答案:2 悬赏:10 手机版
解决时间 2021-11-08 12:51
- 提问者网友:wodetian
- 2021-11-07 18:01
请问在visual c++环境下画点的函数是哪个?
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-11-07 18:49
在vc中使用SetPixel()函数来画点,SetPixel函数说明:
函数功能:该函数将指定坐标处的像素设为指定的颜色。
COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);
参数
hdc
设备环境句柄。
X
指定要设置的点的X轴坐标,按逻辑单位表示坐标。
Y
指定要设置的点的Y轴坐标,按逻辑单位表示坐标。
crColor
指定要用来绘制该点的颜色。
返回值
如果函数执行成功,那么返回值就是函数设置像素的RGB颜色值。这个值可能与crColor指定的颜色有所不同,之所以有时发生这种情况是因为没有找到对指定颜色进行真正匹配造成的。
如果函数失败,那么返回值是-1。
Windows NT:若想获得更多的 错误信息,请调用GetLastError函数。
备注
如果像素点坐标位于当前剪辑区之外,那么该函数执行失败。
不是所有设备都支持SetPixel函数。有关详情,请参考 GetDeviceCaps。
使用SetPixel函数画点只改变一个像素,分辨率高时很不明显,可以使用MoveTo和LineTo函数,先通过CreatePen设置Pen,把Pan调整到需要的大小,然后通过MoveTo(x,y); LineTo(x,y);绘制即可。示例代码如下:
HDC hdc;//设备场景DC
PAINTSTRUCT ps;
HEPN hPen;
hdc = BeginPaint( hWnd , &ps );
hPen = CreatePen( PS_SOLID , 3 , RGB( 255, 0, 0 ));
MoveTo( hdc, 100, 100);
LineTo( hdc, 100, 100);
SelectObject (hdc, hOldPen);
DeleteObject ( hPen );
EndPaint ( hWnd, &ps );
函数功能:该函数将指定坐标处的像素设为指定的颜色。
COLORREF SetPixel(HDC hdc, int X, int Y, COLORREF crColor);
参数
hdc
设备环境句柄。
X
指定要设置的点的X轴坐标,按逻辑单位表示坐标。
Y
指定要设置的点的Y轴坐标,按逻辑单位表示坐标。
crColor
指定要用来绘制该点的颜色。
返回值
如果函数执行成功,那么返回值就是函数设置像素的RGB颜色值。这个值可能与crColor指定的颜色有所不同,之所以有时发生这种情况是因为没有找到对指定颜色进行真正匹配造成的。
如果函数失败,那么返回值是-1。
Windows NT:若想获得更多的 错误信息,请调用GetLastError函数。
备注
如果像素点坐标位于当前剪辑区之外,那么该函数执行失败。
不是所有设备都支持SetPixel函数。有关详情,请参考 GetDeviceCaps。
使用SetPixel函数画点只改变一个像素,分辨率高时很不明显,可以使用MoveTo和LineTo函数,先通过CreatePen设置Pen,把Pan调整到需要的大小,然后通过MoveTo(x,y); LineTo(x,y);绘制即可。示例代码如下:
HDC hdc;//设备场景DC
PAINTSTRUCT ps;
HEPN hPen;
hdc = BeginPaint( hWnd , &ps );
hPen = CreatePen( PS_SOLID , 3 , RGB( 255, 0, 0 ));
MoveTo( hdc, 100, 100);
LineTo( hdc, 100, 100);
SelectObject (hdc, hOldPen);
DeleteObject ( hPen );
EndPaint ( hWnd, &ps );
全部回答
- 1楼网友:话散在刀尖上
- 2021-11-07 19:26
在vc中我都是用SetPixel()来画点的
不过画出来的点太小了,不容易辨认
我想把点画的大一些,有没有好的办法
我曾经用过这样的方法,不过感觉比较麻烦
先选Pen,将Pen的粗细程度改大一点,如5,8,10等等
如果想在(100,100)画点的话,就可以用下面的语句实现
MoveTo(100,100);
LineTo(100,100);
不过画出来的点太小了,不容易辨认
我想把点画的大一些,有没有好的办法
我曾经用过这样的方法,不过感觉比较麻烦
先选Pen,将Pen的粗细程度改大一点,如5,8,10等等
如果想在(100,100)画点的话,就可以用下面的语句实现
MoveTo(100,100);
LineTo(100,100);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯