目錄
1 一.基本知識
2 二.具體介紹
在程式中我們可能有需要在iphone
螢幕上繪製線段、圖形等,比如類似地圖應用程式
,我們主要就需要繪製很多的道路線段。常用的線段、圖形等的繪製我們可以使用quartz2d庫提供的繪製線段和各種圖形api來完成。這裡我們主要介紹一下如何在螢幕上繪製文字和,方法分別有兩種,文字可以使用nsstring(uistringdrawing)的方式實現,可以用uiimage(drawingimages)的方式實現;同時文字和的繪製也可以用quartz2d提供的api實現。
1.文字的繪製
(1)方法1
在uistringdrawing.h標頭檔案中提供了在螢幕上繪製文字的函式,根據不同的引數有不同函式形式,具體可以參考nsstring uikit additions reference。這裡主要介紹兩個函式形式。
- (cgsize)drawatpoint:(cgpoint)point withfont:(uifont *)font
在螢幕上特定的位置以指定的字型繪製單行的文字。(附:iphone座標系的原點為螢幕左上角,向右為x座標軸正方向,向下為y座標軸正方向)
- (cgsize)drawinrect:(cgrect)rect withfont:(uifont *)font
這個函式是在螢幕上指定的區域內繪製單行的文字。
**例子:
-(void) drawtextbystring:(nsstring *)drawtext thepoisition:(cgpoint)point
//方式一
[drawtext drawatpoint:point withfont:[uifont systemfontofsize:fontsize]];
(2)方法2
quartz2d提供的文字繪製方法複雜一些,需要並可以設定更多的引數,同時也可以對繪製的文字有更多的控制,比如對文字進行一定角度的旋轉等。
void cgcontextselectfont (
cgcontextref c,
const char *name,
cgfloat size,
cgtextencoding textencoding
選擇繪製的字型,第乙個引數c為繪製的圖形上下文,可以通過cgcontextref context = uigraphicsgetcurrentcontext();方式獲得,第二個引數name為字型的名字,第三個引數size為字型的大小,第四個引數textencoding為字型的編碼。
void cgcontextsettextdrawingmode (
cgcontextref c,
cgtextdrawingmode mode
設定文字的繪製方式,第二個引數代表繪製的模式,可以為kcgtextfill(填充),kcgtextstroke(描邊)或kcgtextfillstroke(即填充又描邊)。
void cgcontextsettextmatrix (
cgcontextref c,
cgaffinetransform t
設定文字變換矩陣,可以在這裡給出文字平移,縮放或者旋轉變換的矩陣,使文字進行相應的變換。
void cgcontextshowtextatpoint (
cgcontextref c,
cgfloat x,
cgfloat y,
const char *string,
size_t length
在給定的位置處繪製文字。前面都是對文字的繪製進行引數設定,設定好後就可以呼叫這個函式進行繪製。引數依次為繪製的圖形上下文,位置的x和y座標,需要繪製的文字和其長度。(注意:這裡的型別是c的const char *,而不是objective-c的nsstring型別)
**例子:
-(void) drawtextbyquartz:(cgcontextref)context thetext:(const char*)drawtext
thepoisition:(cgpoint)point rotateangle:(float)angle
//方式二
cgcontextselectfont(context, "helvetica", fontsize, kcgencodingmacroman);
cgcontextsettextdrawingmode(context, kcgtextfill);
//可以有更多的控制方式,比如旋轉字型
cgaffinetransform mytexttransform = cgaffinetransformmakerotation(radians (angle));
cgcontextsettextmatrix (context, mytexttransform);
cgcontextshowtextatpoint(context, point.x, point.y, drawtext, strlen(drawtext));
2.的繪製
(1)方法1
uiimage中提供了在螢幕上繪製的函式,主要有兩種形式。
- (void)drawatpoint:(cgpoint)point
在指定的位置繪製。
- (void)drawinrect:(cgrect)rect
在指定的區域繪製,並根據區域的大小對進行縮放。
**例子:
-(void) drawpicbyimage:(uiimage *)theimage thelocation:(cgpoint)point
//方式一
[theimage drawatpoint:point];
-(void) drawpicbyimage:(uiimage *)theimage therect:(cgrect)rect
//方式一
[theimage drawinrect:rect];
(2)方法2
quartz2d提供和繪製函式和uiimage的類似。
void cgcontextdrawimage (
cgcontextref c,
cgrect rect,
cgimageref image
在指定的區域裡繪製一幅。
**例子:
-(void) drawpicbyquartz:(cgcontextref)context thepic:(uiimage *)theimage thelocation:(cgrect)rect
//方式二
cgcontextdrawimage(context, rect, theimage.cgimage);
Zoomit螢幕縮放標記軟體
在尋找一款螢幕縮放 標記軟體的時候,發現了zoomit,感覺挺好用的,現在記一下操作方式 預設熱鍵為ctrl 1進入 退出zoom模式 在zoom模式內,使用 或者滑鼠滾輪控制縮放在zoom模式內,滑鼠右鍵或者esc退出zoom 預設熱鍵為ctrl 2在zoom模式內,按滑鼠左鍵開始畫圖 滑鼠右鍵退...
HTML學習筆記 1 基本標記
html的基本標記 1.頭部標記 head head元素的作用是整篇文件,其中可以有 元資訊定義,文件樣式表定義和指令碼資訊等。文件正式內容 2.標題標記title 標題內容 3.元資訊標記 meta meta元素的資訊不顯示在頁面中,一般來定義頁面資訊的說明,關鍵字,重新整理等。屬性有 1 設定頁...
螢幕旋轉學習筆記
加速計是整個ios螢幕旋轉的基礎,依賴加速計,裝置才可以判斷出當前的裝置方向,ios系統共定義了以下七種裝置方向 typedef ns enum nsinteger,uideviceorientation 以及如下四種介面方向 typedef ns enum nsinteger,uiinte ceo...