最近在做一个给已知坐标区域的封闭图形填充颜色的小实验。。
********************************************************分割线*********************************************
########################已获取坐标点(与像素坐标无关)##################前期已经获得需要填充颜色区域中心的坐标点,貌似跟ScaleHeight和ScaleWidth有关,具体怎么知道的,我是通过Picture1.Line(X1, Y1)这个命令测试的,可以肯定这个坐标(X1, Y1)是纯物理长度方面的表示的。#############求像素坐标(有没有可通过(X1,Y1)变换得到##################
#############换句话说求(X1,Y1)以像素点坐标形式的坐标表示方法##################
为什么一定要某一像素点的(像素)坐标呢?
因为我在调用Picture1.Point(X2, Y2)给某点填充颜色时,这里的(X2, Y2)是以像素坐标点表示的,具体怎么知道的,我是通过Debug.Print (X2 & " " & Y2) 得到的
忘了说了,我把picture 控件的ScaleMode 设为 3 Pixel(X1,Y1)是物理坐标,而(X2,Y2)是像素坐标,这是我的理解有没有关于(X1,Y1)和(X2,Y2)的转换关系的函数或者表达式,这一类相关的理论支持,谢谢各位解答一下。。

解决方案 »

  1.   

    看了两三遍,还没明白楼主说的究竟是啥意思。
    这儿没有“物理坐标”、“像素坐标”的说法吧!
    如果你把ScaleMode设置为Pixel,那在它“内部”用到的坐标单位都是以像素为单位的。你要注意的是:PictureBox的ScaleWidth 、ScaleHeight 是把它的边框“排除在外”了的。
    说直接点,就是:
    如果PictureBox有边框,在“3D外观”时,ScaleWidth 、ScaleHeight 分别比它的Width 、Height 小4像素;
      如果是“平面外观”的,ScaleWidth和ScaleHeight分别比 Width 、Height 小2像素。
    PictureBox如果没有边框,那么ScaleWidth=Width ,ScaleHeight=Height 。但同时你还要注意:
    Width 、Height 的值是“以它所在的容器”的ScaleMode来度量的,跟PictureBox的ScaleMode无关。
      

  2.   

    picture的像素坐标是以左上角为原点的,和我们数学里的坐标系是要换算的