cyl531207502 2015-04-07 15:29 采纳率: 64.3%
浏览 1938
已采纳

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轴0 到400,Y轴设置为0 到400,然后重绘,按理说重绘后的圆应该比之前的小一倍,但实际上完全没有变化,请问为什么,是哪里错了。

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

  • 写回答

1条回答 默认 最新

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

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

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

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿