Point和PointF
Point和PointF
Point在GDI+的結(jié)構(gòu)中是最簡(jiǎn)單的,在數(shù)學(xué)上它完全等價(jià)于一個(gè)二維矢量,包含兩個(gè)公共整型屬性,表示它與某個(gè)特定位置的水平和垂直距離。例如,為了從點(diǎn)A到點(diǎn)B,需要水平移動(dòng)11個(gè)單位,并向下垂直移動(dòng)11個(gè)單位。在坐標(biāo)圖中使用x和y,可以通過如下代碼創(chuàng)建一個(gè)Point結(jié)構(gòu)來表示:
Point ab = new Point(11, 11);
Console.WriteLine("Moved {0} across, {1} down", ab.X, ab.Y);
其中,屬性X和Y都是可讀寫屬性,可以在Point中直接設(shè)置這些值,例如下面的代碼:
Point ab = new Point();
ab.X = 11;
ab.Y = 11;
Console.WriteLine("Moved {0} across, {1} down", ab.X, ab.Y);
按照慣例,水平和垂直坐標(biāo)表示為小寫的x和y,但是對(duì)應(yīng)的Point屬性是大寫的X和Y。這是因?yàn)樵贑#中,公共屬性的一般約定是名稱以大寫字母開頭。
PointF與Point完全相同,但X和Y屬性的類型是float,而不是int。PointF用于坐標(biāo)不是整數(shù)值的情況。已經(jīng)為這些結(jié)構(gòu)定義了數(shù)據(jù)類型轉(zhuǎn)換,這樣就可以把Point隱式地轉(zhuǎn)換為 PointF。但是上述轉(zhuǎn)換沒有相應(yīng)的逆過程,要把PointF轉(zhuǎn)換為Point,必須顯式地復(fù)制值,或使用下面的3個(gè)轉(zhuǎn)換方法,即Round()、Truncate()和Ceiling():
PointF mm = new PointF(20.5F, 10.9F);
Point nn = new Point();
nn.X = (int)mm.X;
nn.Y = (int)mm.Y;
Point ab1 = Point.Roundmm);
Point ab2 = Point.Truncate(mm);
Point ab3 = Point.Ceiling(mm);
PointF mm = nn;
在默認(rèn)情況下,GDI+是以電腦屏幕上的像素作為單位的,Graphics對(duì)象方法把它們接收到的坐標(biāo)看作其參數(shù)的方式。例如,點(diǎn)new Point(20,10)表示在屏幕上水平移動(dòng)20個(gè)像素,向下垂直移動(dòng)10個(gè)像素。通常這些像素從窗口客戶區(qū)域的左上角開始測(cè)量,如上面的示例所示。但是,情況并不總是如此。例如,在某些情況下,需要以窗口的左上角為原點(diǎn)來繪圖,甚至以屏幕的左上角為原點(diǎn)來繪圖。但在大多數(shù)情況下,除非文檔說明書說明,否則都可以假定像素值是相對(duì)于客戶區(qū)域的左上角的。
總結(jié)
以上是生活随笔為你收集整理的Point和PointF的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链表和顺序表的一些区别
- 下一篇: mysql update实质,UPDAT