用GDI 使文字輕鬆旋轉

2021-09-11 04:12:37 字數 2825 閱讀 1161

用gdi+使文字輕鬆旋轉

見資源在老式的windows圖形裝置介面中製作旋轉文字會是一件痛苦費力的工作,但在.net中它會變得很簡單。

by bill wagner

圖1. 在.net中旋轉文字

還記得在典型的windows程式中用gdi(一種老式的圖形裝置api)來實現文字旋轉是件多麼麻煩的事嗎?首先你得設定旋轉字型 - 它只能在幾種平台下實現。而當你想要將文字居中顯示的時候會更麻煩,因為顯示該段文字大小的函式對旋轉字型不起作用。你必須將文字水平放置,再測量其大小,然後建乙個新的旋轉字型,最後把它畫出來。

使用gdi+會大大地簡化操作過程。microsoft在新的圖形裝置介面實現中建立了一種一致的圖形模型,它通過一套c++類來實現。

我寫了乙個簡單的例子來說明用gdi+實現文字旋轉是多麼地容易。在例子中我把文字畫在窗體的中間位置,它能夠以任何角度進行旋轉。gdi+中的兩個特性使繪製過程變得簡單:圖形平移(graphics translations)和圖形旋轉(graphics rotations)。

要將文字居中顯示,只需轉換座標系(coordinates)使原點(origin)置於窗體的中間位置:

size sz = mywindow.size;point middle = new point (sz.width / 2,    sz.height / 2);e.graphics.translatetransform    (middle.x, middle.y);
通過繼續變換來實現簡單的旋**

e.graphics.rotatetransform (_angle);
當位置調整好以後,你就可以繪製文字了:

stringformat format = new stringformat    (stringformatflags.noclip);format.alignment =    stringalignment.center;format.linealignment =    stringalignment.center;e.graphics.drawstring    ("a ****** textstring ", f,    brushes.black, 0, 0, format);
stringformat物件控制著該字串的對齊方式。這裡,我選中了居中位置。

現在你能夠以任何角度旋轉字型了。在執行這段**時,你會發現當它旋轉到正45度角的時候,看起來卻像是負45度角(見圖1)。記住在gdi中標準的座標系是y座標向下的,在這種座標系上,正角度的旋轉是沿水平軸順時針旋轉的。

bill wagner是

srt solutions的windows技術專家。他是

visual studio magazine的撰稿編輯,也是

[email protected]

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

用gdi+使文字輕鬆旋轉

見資源在老式的windows圖形裝置介面中製作旋轉文字會是一件痛苦費力的工作,但在.net中它會變得很簡單。

by bill wagner

圖1. 在.net中旋轉文字

還記得在典型的windows程式中用gdi(一種老式的圖形裝置api)來實現文字旋轉是件多麼麻煩的事嗎?首先你得設定旋轉字型 - 它只能在幾種平台下實現。而當你想要將文字居中顯示的時候會更麻煩,因為顯示該段文字大小的函式對旋轉字型不起作用。你必須將文字水平放置,再測量其大小,然後建乙個新的旋轉字型,最後把它畫出來。

使用gdi+會大大地簡化操作過程。microsoft在新的圖形裝置介面實現中建立了一種一致的圖形模型,它通過一套c++類來實現。

我寫了乙個簡單的例子來說明用gdi+實現文字旋轉是多麼地容易。在例子中我把文字畫在窗體的中間位置,它能夠以任何角度進行旋轉。gdi+中的兩個特性使繪製過程變得簡單:圖形平移(graphics translations)和圖形旋轉(graphics rotations)。

要將文字居中顯示,只需轉換座標系(coordinates)使原點(origin)置於窗體的中間位置:

size sz = mywindow.size;point middle = new point (sz.width / 2,    sz.height / 2);e.graphics.translatetransform    (middle.x, middle.y);
通過繼續變換來實現簡單的旋**

e.graphics.rotatetransform (_angle);
當位置調整好以後,你就可以繪製文字了:

stringformat format = new stringformat    (stringformatflags.noclip);format.alignment =    stringalignment.center;format.linealignment =    stringalignment.center;e.graphics.drawstring    ("a ****** textstring ", f,    brushes.black, 0, 0, format);
stringformat物件控制著該字串的對齊方式。這裡,我選中了居中位置。

現在你能夠以任何角度旋轉字型了。在執行這段**時,你會發現當它旋轉到正45度角的時候,看起來卻像是負45度角(見圖1)。記住在gdi中標準的座標系是y座標向下的,在這種座標系上,正角度的旋轉是沿水平軸順時針旋轉的。

bill wagner是

srt solutions的windows技術專家。他是

visual studio magazine的撰稿編輯,也是

[email protected]

GDI 入門(三 GDI 中文字操作)

三 gdi 中文字操作 using system.drawing using system.drawing.drawing2d using system.drawing.text private void button1 click object sender,eventargs e private...

GDI 測算文字繪製範圍

啥也不羅嗦,上 gdiplus solidbrush brush gdiplus color 124,25,28 gdiplus rectf bound size sz hdc hdc gs.gethdc settextcharacterextra hdc,0 settextjustificatio...

7 利用GDI 繪製文字

s 要繪製的字串。它定義字串的文字格式。它確定所繪製文字的顏色和紋理。結構,它指定所繪製文字的左上角。drawstring string s,font font,brush brush,pointf point drawstring string s,font font,brush brush,fl...