PS_DOT参数无效,或者说电脑会自动绘制一个PS_SOLID覆盖小弟我的绘图为什么?代码如下
PS_DOT参数无效,或者说电脑会自动绘制一个PS_SOLID覆盖我的绘图为什么?代码如下:
......
CPen pen4;pen4.CreatePen(PS_DOT,1,RGB(0,0,255));
dc.SelectObject(&pen4);//绘制坐标轴
dc.MoveTo(rect.left,ymax);
dc.LineTo(rect.right,ymax);
dc.MoveTo(xmax,rect.bottom);
dc.LineTo(xmax,rect.top);
......
//以上代码运行后,在屏幕上看到一条蓝色的点线,
//但是上面覆盖了一条白色的实线。
//在线等。
------解决方案--------------------
别急,慢慢来。
你说的一条白色的线在你的蓝色点线的上面,这句话我不是很理解,是上下两条平行的两根线还是说重叠在一起的两条线呢?如果是后者,你的意思是不是说你的图像里背景不是白色的,蓝色的点线的两点之间的部分是白色?这个并不是系统给你画了两次线,而是虚线点之间的的部分系统是默认用背景色来绘制,一般背景色都是白色。
如果是这个情况的话,那么你可以要么用DC类的SetBKColor(COLORREF)来设置虚线背景色,设成和你图的背景色一样就可以了
------解决方案--------------------
SetBkMode(TRANSPARENT);
GDI在画点划线的时候,使用背景色来填充空白区域。
......
CPen pen4;pen4.CreatePen(PS_DOT,1,RGB(0,0,255));
dc.SelectObject(&pen4);//绘制坐标轴
dc.MoveTo(rect.left,ymax);
dc.LineTo(rect.right,ymax);
dc.MoveTo(xmax,rect.bottom);
dc.LineTo(xmax,rect.top);
......
//以上代码运行后,在屏幕上看到一条蓝色的点线,
//但是上面覆盖了一条白色的实线。
//在线等。
------解决方案--------------------
别急,慢慢来。
你说的一条白色的线在你的蓝色点线的上面,这句话我不是很理解,是上下两条平行的两根线还是说重叠在一起的两条线呢?如果是后者,你的意思是不是说你的图像里背景不是白色的,蓝色的点线的两点之间的部分是白色?这个并不是系统给你画了两次线,而是虚线点之间的的部分系统是默认用背景色来绘制,一般背景色都是白色。
如果是这个情况的话,那么你可以要么用DC类的SetBKColor(COLORREF)来设置虚线背景色,设成和你图的背景色一样就可以了
------解决方案--------------------
SetBkMode(TRANSPARENT);
GDI在画点划线的时候,使用背景色来填充空白区域。