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語言的基本結構 程式由上而下執行,執行完上條語句再往下執行,平時寫的程式基本都用到順序結構。四則運算 乘 除 外加乙個比較常...