cyl531207502 2015-04-07 07:29 采纳率: 71.4%
浏览 1939
已采纳

windows程序设计中MM_ANISOTROPIC使用问题

SetWindowExtEx, 用于设置逻辑坐标范围。
SetViewPortExtEx, 用于设置设备坐标范围。
那么,如果存在以下代码:
SetMapMode(hdc,MM_ANISOTROPIC);
SetWindowExtEx(hdc,200,200,NULL);//将窗口的逻辑坐标X轴0 到200,Y轴设置为0 到200
//将视口原点设置为客户区的中心点上
SetViewportOrgEx(hdc,rectClient.right / 2,rectClient.bottom / 2,NULL);
//将窗口的设备坐标X轴 0 到 rectClient.right,Y轴0 到 rectClient.bottom
SetViewportExtEx(hdc,rectClient.right,rectClient.bottom,NULL);

     Ellipse(hdc,-100,-100,100,100);
     MoveToEx(hdc,-200,0,NULL);
     LineTo(hdc,200,0);
     MoveToEx(hdc,0,-200,NULL);
     LineTo(hdc,0,200);
     MoveToEx(hdc,0,0,NULL);
     LineTo(hdc,100,100);
            效果图为![图片说明](https://img-ask.csdn.net/upload/201504/07/1428420115_269700.jpg)
        假设我现在再加一段代码:
        case WM_KEYDOWN:
          switch(wParam)
          {
          case VK_LEFT:
               SetWindowExtEx(hdc,400,400,NULL);
               UpdateWindow(hwnd);
               break;
          }
          return 0;
            也就是将窗口的逻辑坐标X轴0400,Y轴设置为0400,然后重绘,按理说重绘后的圆应该比之前的小一倍,但实际上完全没有变化,请问为什么,是哪里错了。

我只是想用MM_ANISOTROPIC这种映射模式来实现输出图形放大缩小的效果,类似CAD画图滚动中键那样,应该不停执行 SetWindowExtEx(hdc,变量,变量,NULL);能实现的吧?请知道的告诉下,谢谢了

展开全部

  • 写回答

1条回答 默认 最新

  • devmiao 2015-04-07 07:31
    关注

    同样的问题昨天有人问了。其实没有必要。
    你只要增加个比例的变量。程序中绘图的代码都乘以它就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥100 二维码被拦截如何处理
  • ¥15 怎么解决LogIn.vue中多出来的div
  • ¥15 优博讯dt50巴枪怎么提取镜像
  • ¥30 在CodBlock上用c++语言运行
  • ¥15 求C6748 IIC EEPROM程序固化烧写算法
  • ¥50 关于#php#的问题,请各位专家解答!
  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部