使用mm作为单位画图有问题

MikeDogSong 2009-12-04 04:33:56
加精
关于使用CDC画图的问题:
我设置用0.1mm作为单位


void CCircleView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
pDC->SetMapMode( MM_LOMETRIC );
CView::OnPrepareDC(pDC, pInfo);
}


画一个7cm直径的正圆

void CCircleView::OnDraw(CDC* pDC)
{
CCircleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

pDC->Ellipse( 0,0,700,-700 );
}

但实际画出来的不是7cm,有误差3mm左右,为什么会这样
...全文
1463 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp_programer 2010-12-27
  • 打赏
  • 举报
回复
很感谢这贴,让我来做个总结吧.

请看http://hi.baidu.com/cpp_programer/blog/item/1ce1d9dda0345a3e10df9b4a.html
sxdgundam 2009-12-14
  • 打赏
  • 举报
回复
mark学习
MikeDogSong 2009-12-14
  • 打赏
  • 举报
回复
[Quote=引用 50 楼 fu_qi_ming 的回复:]
用电脑作图,不可能画出准确的尺寸的,屏幕的显示大小都是可以调整的。又怎么能画出准确的尺寸,
想想就不可能。所有的是大约
[/Quote]

有没有办法获取显示器的实际宽度?
MikeDogSong 2009-12-13
  • 打赏
  • 举报
回复
其实我是要帮朋友做个课件,是给小学生用的,画个圆,然后鼠标移动到该圆上时,我就提示这个圆的直径是多少,就碰到上面的问题了。。。。


今天晚上结贴了,主要是回复的朋友太多,怕时间长了记不住了。。。。谢谢所有的朋友,分数有限不能人人有分了。。。。

上面的问题还有么有其他的思路啊?谢谢了


明明 2009-12-13
  • 打赏
  • 举报
回复
用电脑作图,不可能画出准确的尺寸的,屏幕的显示大小都是可以调整的。又怎么能画出准确的尺寸,
想想就不可能。所有的是大约
cqcccc 2009-12-13
  • 打赏
  • 举报
回复
没想到这几天没来有这么多朋友在关注,呵呵
MikeDogSong 2009-12-12
  • 打赏
  • 举报
回复
刚才下到了屏幕尺子的源码,是delphi的,研究了一下,发现:
class procedure TPixelMMConverter.PixelsPerMM(canvas: TCanvas; var x, y: single);
var
h:HDC;
hres,vres,hsiz,vsiz:integer;
begin
h:=canvas.handle;
hres := GetDeviceCaps(h,HORZRES); {display width in pixels}
vres := GetDeviceCaps(h,VERTRES); {display height in pixels}
hsiz := GetDeviceCaps(h,HORZSIZE); {display width in mm}
vsiz := GetDeviceCaps(h,VERTSIZE); {display height in mm}
x := hres/hsiz;
y := vres/vsiz;
end;


这个xy分别是x方向每个毫米的像素以及y方向每个毫米的像素

还有一个发现就是屏幕尺子所测量的屏幕宽度也是不对的。。。。
附屏幕尺子的源码:
http://delphi.about.com/od/fullcodeprojects/ss/screen_ruler.htm
MikeDogSong 2009-12-12
  • 打赏
  • 举报
回复
没想到这几天没来有这么多朋友在关注,呵呵

我找到有个屏幕尺子(pc上的,手机上的叫超级尺子)确实能准确的画出厘米,不知道怎么弄的,还继续在探索。。。。


谢谢大家
han42959 2009-12-12
  • 打赏
  • 举报
回复
学习一下
yzgywxb 2009-12-12
  • 打赏
  • 举报
回复
学习中
laotou99 2009-12-11
  • 打赏
  • 举报
回复
学习学习 支持一下
shaonew 2009-12-11
  • 打赏
  • 举报
回复
顶起
chenzhaochun 2009-12-11
  • 打赏
  • 举报
回复
这个帖子值得收藏~
qiushenwei88 2009-12-11
  • 打赏
  • 举报
回复
进来学习
aoyihuashao 2009-12-11
  • 打赏
  • 举报
回复
用厘米为单位,,,,MARK
huanqun1020 2009-12-11
  • 打赏
  • 举报
回复
学习了
chenxiaojuan_1208 2009-12-10
  • 打赏
  • 举报
回复
xuexiuexi
winnuke 2009-12-10
  • 打赏
  • 举报
回复
在屏幕上想要取得精确的长度是很难的。
getdevicecap里貌似只有一个属性返回值是正确的物理度量值。
一切的一切都是相对的,逻辑的。windows有一个dpi值,你可以把他调成一个范围内的任意值。
但是在打印机上精确性会提高不少。
asdfghjkl8111 2009-12-10
  • 打赏
  • 举报
回复
支持一下
gwemail2003 2009-12-10
  • 打赏
  • 举报
回复
1 屏幕上显示是否正确需要验证
加载更多回复(31)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧