CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

作图区坐标系的设置问题

楼主vdragon(紫龙)2003-12-03 13:54:06 在 C++ Builder / 基础类 提问

映射模式有MM_LOMETRIC、MM_HIMETRIC、MM_LOENGLISH、MM_HIENGLISH、MM_TWIPS种。    
  它们默认的坐标原点都使在左上角。其区别在于每一个逻辑单位对应的物理大小不一样。    
  所对用的逻辑单位分别为0.1毫米,0.01毫米,0.01英寸,0.001英寸,1/1440英寸(0.00    
  07英寸)。    
      我在窗体上放置一个ScrollBox,然后在这个ScrollBox上拖动图形控件作图。由于默认    
  的    
  坐标系是MM_TEXT,逻辑单位为象素,这样图形链接的时候很不精确,我想把我的作图区坐    
  标设置成MM_TWIPS,这样逻辑单位就是1/20象素,在两个图形控件相连时,可以很精确的    
  对齐了。请问具体改怎么设置?    
   
  我自己试着写了一下    
  __fastcall   TForm1::TForm1(TComponent*   Owner)    
                  :   TForm(Owner)    
  {    
      SetMapMode(Form1->Canvas->Handle,MM_TWIPS);    
   
  }    
  //-------------------------------------------------------------------------    
  void   __fastcall   TForm1::FormMouseMove(TObject   *Sender,   TShiftState   Shift,    
              int   X,   int   Y)    
  {    
        TVarRec   tempvar1[2]   =   {X,   Y};    
      StatusBar1->Panels->Items[0]->Text=Format("当前位置:   (%d,   %d)",   tempvar1,   2)    
  ;    
  }    
  按理状态条上应该是以1/20象素为单位显示的坐标,可是,结果还是按象素显示。    
  而且,如果我要设置ScrollBox的话,ScrollBox没有Canvas对象,那要怎么设置呢?    
  问题点数:0、回复次数:9Top

1 楼constantine(飘遥的安吉儿)回复于 2003-12-03 15:05:22 得分 0

建议放弃ScrollBox,图象的移动就像ACDSEE一样处理,这样就不用考虑ScrollBox的问题了Top

2 楼zhvickie(相信)回复于 2003-12-03 20:29:23 得分 0

具体一点。  
  我也想知道,顶Top

3 楼vdragon(紫龙)回复于 2003-12-03 21:55:51 得分 0

void   __fastcall   TForm1::FormMouseDown(TObject   *Sender,  
              TMouseButton   Button,   TShiftState   Shift,   int   X,   int   Y)  
  {  
        SetMapMode(Form1->Handle,MM_TWIPS);  
        TPoint*   pt;  
        pt->x=X;  
        pt->y=Y;  
        Text1->Text=pt->x;  
        DPtoLP(Form1->Handle,pt,1);  
        Text2->Text=pt->x;  
   
  }      
    按道理,Text2显示的值是Text1的值的20倍,可是结果却是相等的,也就是我这个坐标转换根本没有成功,请问正确的该怎么做?Top

4 楼vdragon(紫龙)回复于 2003-12-03 21:57:56 得分 0

知道了,我改成  
  Form1->Canvas->Handle就可以了,忘记了:(  
   
  但是,对于ScrollBox这种没有Canvas的控件,该怎么转换坐标呢?Top

5 楼laishishenghust(好好学习)回复于 2003-12-30 14:36:51 得分 0

markerTop

6 楼goneaway1981(当我们踏上征程)回复于 2003-12-31 09:15:24 得分 0

学习Top

7 楼goneaway1981(当我们踏上征程)回复于 2003-12-31 09:50:35 得分 0

我也用这个函数试了试,怎么没有变化啊~~~~~Top

8 楼emsi(TObject *Sender)回复于 2003-12-31 11:45:36 得分 0

楼主提供的源码有好几处错误.  
   
  楼上的当然不能看到变化了.  
   
  将构造函数里的那一行删掉.  
   
  void   __fastcall   TForm1::FormMouseDown(TObject   *Sender,   TMouseButton   Button,  
              TShiftState   Shift,   int   X,   int   Y)  
  {  
        TPoint*   pt=new   TPoint();  
        pt->x=X;  
        pt->y=Y;  
        Text1->Text=pt->x;  
        SetMapMode(Form1->Canvas->Handle,MM_TWIPS);  
        DPtoLP(Form1->Canvas->Handle,pt,1);  
        Text2->Text=pt->x;  
   
  }Top

9 楼emsi(TObject *Sender)回复于 2003-12-31 11:51:40 得分 0

至于要在ScrollBox里产生Canvas.简单的方法就是放一个PaintBox进去.利用PaintBox的Canvas进行绘图.不知能不能满足楼主的要求?Top

相关问题

  • bc31的问题:如何改变绘图区的坐标系方向和坐标原点
  • bc31的问题:如何改变绘图区的坐标系方向和坐标原点
  • 如何在FORM上动态设置2维坐标系?
  • 如何在picturebox中建立双对数坐标系(bode图)
  • CWindowDC和CClientDC中的绘图函数各以什么作为坐标系?
  • 关于坐标系绘制图形后 如何更改背景颜色
  • 关于坐标系绘制图形后 如何更改背景颜色
  • 怎么把WGS-84坐标系上的点映射到厦门地图上?
  • 坐标系问题
  • 关于坐标系

关键词

  • 坐标
  • 逻辑
  • 控件
  • 图形
  • scrollbox
  • twips
  • pt
  • 象素
  • canvas
  • 设置

得分解答快速导航

  • 帖主:vdragon

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo