C 基本結構

2021-06-08 20:22:35 字數 3816 閱讀 2821

1,在c#中,結構體和類的成員都會被預設設定為私有成員。區別在於類是引用型別,結構體是值型別。

引用型別是指,乙個指向記憶體塊的指標。

2,c#中,點、尺寸、矩形、顏色 四個資料型別都是結構體而不是類。

3,point結構具有兩個讀寫屬性的,叫做x,y的32為整數。

point是個結構體,但是定義的同時也必須賦值

point pt=new point();然後pt.x=1;pt.y=2;

point結構本身有個靜態字段 point.empty,可以對point的值進行初始化。x,y都會被初始化為0。還有個isempty唯讀屬性,如果x,y都為0,可以返回乙個true。

4,point的例項有方法tostring(); 可以輸出 這樣的結果

pt1.equals(point pt2);可以比較兩個點是否同乙個座標,返回乙個bool結果。也可以用pt1==pt2代替。

pt.offset(4,-5);可以設定偏移量。相當於pt.x+=4,pt.y+=-5;

5,point 陣列: point pt=new point[20];就可以使用pt[0]~pt[19];用於表示曲線上的一系列點。每個點都會被初始化為0,0。

建立陣列的時候可以初始化陣列 

point pt=new point[3];

point pt=new point;

point pt=;

6, size

size結構和point結構類似,有3個屬性,width,hight,isempty。建立size方式和point一樣,size size=new size(15,20);  (width和hight可正可負)

size和point可以相互構造 size(point point); point(size size);可以相互強制轉換 size=(size)pt; pt=(point)size;

7,size可以進行+ -運算。size1=size2+size3;   size1-=size2;

point可以與size進行加減。pt1+=size1

8,float版本

pointf ptf=new pointf();

ptf.x=10.2f;

ptf.y=8.7f;   (記得必須要加f)

pointf不包括offset方法。

可以將乙個point強制轉換成pointf   

ptf=(pointf)pt,但是不能進行相反的強制轉換。

但是可以使用以下方法轉換

point round(pointf ptf);四捨五入

point truncate(pointf ptf);去掉小數點

point ceiling(pointf ptf);去掉小數點後+1

9,矩形就是乙個point加上乙個size 。構造方法為rectangle(point pt,size size);或者rectangle(int x,int y ,int width,int height)

rectanglef的構造是rectanglef(pointf ptf,sizef sizef);rectanglef(float x,float y ,float width,float height)

rectangle可以強制轉換成rectanglef,rectanglef可以通過round,truncate,ceiling方法轉換成rectangle。

rectangle屬性包括:point location,size size,int x,int y,int width,int height,int left,int top,int right,int bottom,bool isempty.

10,方法offset可以把rectangle從乙個位置移動到另乙個位置,rect.offset(2,4);相當於rect.x+=2,rect.y+=4

或者使用rect.location+=new size(2,4);

inflate可以把矩形從圓心放大,rect.inflate(3,6);橫座標各增加3,縱座標各增加6.

11,窗體和客戶區,客戶區不包含窗體的邊框、標題欄、選單欄。有兩個屬性

1,clientsize,

2,clientrectangle。

避免設定乙個屬性的屬性。例如form1.client.clinetsize.width=100。這是錯誤的。

可以用這樣的形式form1.clinet.clinetsize=new size(200,300);

12,onmove是move事件的對應的方法,在視窗移動的時候觸發該事件。對應的委託是void moveevent(object obj,eventarg ea);  onresize一樣,在視窗大小變化的時候觸發該事件。

在onresize 裡增加了invalidate(),可以直接用resizeredraw屬性來代替。resizeredraw=true;他的本質是呼叫了基類的onresize()方法,在基類的onresize方法中可能包含有語句

if(resizeredraw)

invalidate();

在重寫onresize的時候一定要呼叫基類的onresize,否則resizeredraw會失效。

13,control類的invalidate()方法可以是客戶區無效,呼叫onpaint()方法重繪客戶區。但是onpaint不是立即呼叫的。需要等待其他事件處理完。如果要立即重繪客戶區,在invalidate()後,在呼叫control類的update()方法即可。

14,color是system.drawing空間下的 乙個機構。winform中的顏色基於argb (alpha-red-green-blue)模型。color的建構函式為color clr=new color; 是乙個純黑色。一般使用color的屬性或者color的方法來得到color的物件。

靜態方法color.fromargb,可以返回乙個color物件,過載的方法有

color color.fromargb(int r,int g,int b);

color color.fromargb(int a,int r,int g,int b);

color color.fromargb(int a,color clr);

15,pen類是由color類指定的。例如pen pen=new pen(color clr);如果要使用預製顏色,可以使用pens類,它包含有很多屬性,可以返回乙個pen的物件。

16,brush是乙個抽象類,不能對其進行例項化,他有幾個子類,solidbrush,hashbrush等等。

brush brush=new solidbrush(color clr);

burshes類有很多屬性,可以返回乙個brush。

17,在drawstring有個過載的方法,裡邊包含stringformat類,可以決定string在控制項中的現實位置。

stringformat strfmt=new stringformat();

strfmt這個類有兩個屬性,alignment和linealignment,是水平位置和豎直位置。stringalignment結構包含三個列舉型別,near,middle,far。

strfmt.alignment=stringalignment.near;

strfmt.alignment=stringalignment.far;

18,measurestring方法。measurestring 是grafics類的乙個方法。sizef stringsize=grfx.measurestring(string str,font f);

19,在矩形裡的文字: grfx.drawstring(string str,font font,rectanglef rect,stringformat strfmt);

如果這個矩形是clientrectangle,那麼就可以把文字輸入在客戶區里,自動換行。

c 基本結構

include using namespace std main 是程式開始執行的地方 int main 接下來我們講解一下上面這段程式 c 語言定義了一些標頭檔案,這些標頭檔案包含了程式中必需的或有用的資訊。上面這段程式中,包含了標頭檔案 下一行 using namespace std 告訴編譯器...

C 程式基本結構

using system using system.text namespace helloworld c 程式結構大體分為命名空間 類 main方法 識別符號 關鍵字 語句 注釋。命名空間 c 程式是利用命名空間組織起來的,命名空間既用做程式的內部組織系統,也用作向外部公開的組織系統。如果要呼叫某...

順序結構(C語言基本結構)

順序結構 1.基本概念 語句執行的順序與順序程式書寫的順序一致 特點 a.程式執行的順序和語句書寫的順序一致 b.有乙個資料入口,乙個資料出口 順序結構與四則運算 順序結構是c語言的基本結構 程式由上而下執行,執行完上條語句再往下執行,平時寫的程式基本都用到順序結構。四則運算 乘 除 外加乙個比較常...