坐标系问题

smallpx 2005-04-14 11:37:40
1.在VC6.0中通过GDI+画椭圆
2.使用
pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetWindowExt(1000,1000);
    pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetViewportOrg(0,-rect.bottom);
代码设置了一个以屏幕左下角为原点,向上向右为正的坐标系。(也许上面的代码有问题,具体的我想不起来了,在另一台电脑上,已经通过测试证明坐标系建立正确)
3.使用GDI+绘制椭圆。
我的问题是:
在GDI+中的绘制图形时使用的是世界坐标,默认的坐标原点在屏幕的左上角,向右向上为正。我如何能够在VC6用GDI+绘制椭圆时,使用上面2自定义的坐标系呢?
...全文
236 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallpx 2005-04-17
  • 打赏
  • 举报
回复
qiangv的仁兄,你说的那个OnPreapareDC是什么类的成员变量?Grapics类的吗?我怎么在sdk的帮助文档中搜了一下,跟本就没有这个函数呢?

其实我的目的是这样的:因为我要绘制一个对称轴不平行于坐标轴的椭圆和椭圆弧。按道理来说应该使用杯赛儿曲线绘制。但是我没看明白贝塞尔绘制椭圆弧的算法。可我发现,gdi+中对于图形的变换如旋转是非常的方便的。所以就决定使用gdi+。但是又没办法将自己定义的坐标系应用于gdi+中,所以求助于各位大侠的帮忙。
smallpx 2005-04-17
  • 打赏
  • 举报
回复
qiangv的仁兄,我看了.你提供的那个函数是用于打印机的.而我显示图像的是屏幕阿?但是我还是试了一下.用上CView的这个OnPrepareDC函数,也没有改变在GDI+上的坐标系阿。我用 graphics.DrawLines(&penRed,pPoints, 2);画了一条直线,Point point1(0, 0);Point point2(400, 400);,无论有否OnPrepare函数,画出来的都是一个又屏幕左上角引出的直线。而我想让这过(0,0),(400,400)显示出来是过屏幕左下角的直线阿。
qiangv 2005-04-16
  • 打赏
  • 举报
回复
1.在VC6.0中通过GDI+画椭圆
2.使用
pDC->SetMapMode(MM_ANISOTROPIC);
    pDC->SetWindowExt(1000,1000);
    pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetViewportOrg(0,-rect.bottom);
代码设置了一个以屏幕左下角为原点,向上向右为正的坐标系。(也许上面的代码有问题,具体的我想不起来了,在另一台电脑上,已经通过测试证明坐标系建立正确)

------------------------------------------------
这个代码并不会设置一个以屏幕左下角为原点,向上向右为正的坐标系。应该是
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(1000,1000);
pDC->SetViewportExt(rect.right,-rect.bottom);
pDC->SetViewportOrg(m_rect.left,rect.bottom);

3.使用GDI+绘制椭圆。
我的问题是:
在GDI+中的绘制图形时使用的是世界坐标,默认的坐标原点在屏幕的左上角,向右向上为正。我如何能够在VC6用GDI+绘制椭圆时,使用上面2自定义的坐标系呢?
---------------------------------------------
画图用的是逻辑坐标,向右向下为正。如果用2的坐标系,可在OnPreapareDC函数中设置。
smallpx 2005-04-16
  • 打赏
  • 举报
回复
谢谢大家。我听大家的意见试试,然后散分。如果大家还有什么好的建议也即时提啊,小妹这里谢过
lonenomad 2005-04-16
  • 打赏
  • 举报
回复
你想干什么啊?

绘椭圆的候用绘椭圆的坐标系,椭直线的时候用椭直线的坐标系。

pDC->SetMapMode(MM_ANISOTROPIC);//绘椭圆时的坐标
    pDC->SetWindowExt(1000,1000);
    pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetViewportOrg(0,-rect.bottom);
pDC->Eillipse(0,0,500,500);

pDC->SetMapMode(MM_TEXT);//改为绘直线时的坐标
    pDC->SetWindowExt(1000,1000);
    pDC->SetViewportExt(rect.right,rect.bottom);
pDC->SetViewportOrg(0,-rect.bottom);
pDC->Lineto(0,100);
smallpx 2005-04-16
  • 打赏
  • 举报
回复
能不能有人说得详细些。具体怎么弄啊?
mousubin 2005-04-15
  • 打赏
  • 举报
回复
定义变换矩阵
smallpx 2005-04-15
  • 打赏
  • 举报
回复
怎么没人理我啊?自己顶一下
smallpx 2005-04-15
  • 打赏
  • 举报
回复
我的那个向上的坐标系还要用于其他绘制直线,多边形等图元。那些图形的绘制我用的是pdc,没有使用gdi+。所以只是椭圆特殊处理
smallpx 2005-04-15
  • 打赏
  • 举报
回复
楼上的大侠说的什么意思?能否说得详细些
syy64 2005-04-15
  • 打赏
  • 举报
回复
将向上的坐标统一减去客户区的高度。
smallpx 2005-04-15
  • 打赏
  • 举报
回复
还是没人回答?再顶

19,469

社区成员

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

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