在ScrollView中画圆,发现重绘时有有关问题
在ScrollView中画圆,发现重绘时有问题
在ScrollView中画圆,发现重绘时有问题,不能正确重绘
CMyView::OnDraw(CDC* pDC)
{
CRect rect(0,0,100,100);
pDC->DPtoLP(&rect);
pDC->Ellipse(rect);
}
做过一下测试
1。 当不使用DPtoLP时,圆无法显示,
2。 当使用DPtoLP时,调节滚动条时,圆不能正确重绘。
调了好长一段时间了,没有找到问题所在。
原来写过这样的代码,记得没有什么问题啊。大家帮忙想想可能是哪里出问题了。
------解决方案--------------------
应该要设置映射模式吧
------解决方案--------------------
你想干什么?
如果你想圆随着你的滚动条滚动而滚动,就去掉pDC->DPtoLP(&rect);
OnDraw本来画的就是逻辑坐标,OnDraw函数自己会进行设备坐标和逻辑坐标的转换,也是比较少使用逻辑坐标的函数。
如果你想不管你滚动条如何变化画的圆的位置都不变,也就是说设备坐标不变才需要加此句pDC->DPtoLP(&rect);
,比如你想固定画一个圆,而不管你的滚动条如何变化,圆在屏幕上都不变化,那么你就加上这句。
------解决方案--------------------
谁说逻辑坐标系向下是负的?如果你没修改的话,默认映射模式为MM_TEXT,Y轴向下为负方向
其他映射模式下,比如MM_LOMETRIC映射模式Y轴向上为正方向。
在ScrollView中画圆,发现重绘时有问题,不能正确重绘
CMyView::OnDraw(CDC* pDC)
{
CRect rect(0,0,100,100);
pDC->DPtoLP(&rect);
pDC->Ellipse(rect);
}
做过一下测试
1。 当不使用DPtoLP时,圆无法显示,
2。 当使用DPtoLP时,调节滚动条时,圆不能正确重绘。
调了好长一段时间了,没有找到问题所在。
原来写过这样的代码,记得没有什么问题啊。大家帮忙想想可能是哪里出问题了。
------解决方案--------------------
应该要设置映射模式吧
------解决方案--------------------
你想干什么?
如果你想圆随着你的滚动条滚动而滚动,就去掉pDC->DPtoLP(&rect);
OnDraw本来画的就是逻辑坐标,OnDraw函数自己会进行设备坐标和逻辑坐标的转换,也是比较少使用逻辑坐标的函数。
如果你想不管你滚动条如何变化画的圆的位置都不变,也就是说设备坐标不变才需要加此句pDC->DPtoLP(&rect);
,比如你想固定画一个圆,而不管你的滚动条如何变化,圆在屏幕上都不变化,那么你就加上这句。
------解决方案--------------------
谁说逻辑坐标系向下是负的?如果你没修改的话,默认映射模式为MM_TEXT,Y轴向下为负方向
其他映射模式下,比如MM_LOMETRIC映射模式Y轴向上为正方向。