请教一个GDI+ 中文乱码问题
以下是TonyDeng大哥写的一个用GDI+画图写字的代码,代码很好用。
就是写中文时会出现乱码,不知有什么方法解决它。(还有就是想把写的文字坚排)!
TonyDeng
https://bbs.bccn.net/thread-344650-1-1.html
程序代码:
*---------------------------- * 使用 GDI+ 庫繪圖範例 * 打開 VCX 文件可以查看類庫源代碼 *---------------------------- *---------------------------- * VFP 9.0(SP2) 自帶GDI+類庫 * 文件名:_GDIplus.vcx, _GDIplus.vct (若使用頭文件,有 GDIplus.h, GDIplus_locs.h) * 路徑:VFP 安裝目錄下 FFC 文件夾 *---------------------------- SET PATH TO HOME() + "FFC" _Bitmap = NEWOBJECT("gpBitmap", "_GDIplus.vcx") && 建立繪圖板對象,圖形將在此畫板上繪製 WITH _Bitmap .Create(128,128) && 設定畫板大小,寬度和高度 .SetResolution(300,300) && 設定分辨率(x,y 的 DPI 値) ENDWITH _Color = NEWOBJECT("gpColor", "_GDIplus.vcx") && 建立顔色對象 _Pen = NEWOBJECT("gpPen", "_GDIplus.vcx") && 建立畫筆對象 _Font = NEWOBJECT("gpFont", "_GDIplus.vcx") && 建立字體對象 _StringFormat = NEWOBJECT("gpStringFormat", "_GDIplus.vcx") _TextBrush = NEWOBJECT("gpSolidBrush", "_GDIplus.vcx") _Point = NEWOBJECT("gpPoint", "_GDIplus.vcx") _Graphics = NEWOBJECT("gpGraphics", "_GDIplus.vcx") && 建立圖形對象 WITH _Graphics .CreateFromImage(_Bitmap) && 指定圖形對象的設備,此處指向已建立的_Bitmap對象 _Color.Set(255,255,255) && 設定顔色,三個參數分別是紅、緑、藍値,即RGB各自獨立 .Clear(_Color) && 用設定的顔色填充整個圖形,可用於背景顔色 _Color.Set(0,0,0) && 改變顔色 _Pen.Create(_Color, 10) && 將指定的顔色賦予畫筆,請查看類庫中gpPen對象Create方法的參數,此處10是筆寬 .DrawLine(_Pen, 20, 20, 108, 20) && 用設定的畫筆畫圖,類庫中有很豐富強大的畫圖函數 .DrawLine(_Pen, 20, 50, 108, 50) _Color.Set(0,255,0) _Font.Create("Arial", 10, 0, 3) && 設置文本字體 _TextBrush.Create(_Color) && 設定文本顔色 _Point.Create(10, 80) && 設定文本左上角位置 .DrawStringA("Test", _Font, _Point, _StringFormat, _TextBrush) ENDWITH _Bitmap.SaveToFile("Test.BMP", "image/bmp") && 將繪圖板保存爲文件,此處指定文件格式爲.BMP RELEASE ALL RETURNDrawStringA 方法
以指定的字体和位置绘制一个串(ANSI 版本)。
语法:THIS.DrawStringA( tcAnsiString, [toFont],tvRectPoint,[toStringFormat],[toBrush])
返回值:逻辑型,表示成功或失败。
参数:
tcAnsiString,必须,要绘制的 ANSI 串。
toFont,可选,指定要使用字体的 gpFont 对象。
tvRectPoint,必须,指定绑定矩形的 gpRect 对象,或指定坐上角的 gpPoint 对象。
toStringFormat,可选,gpStringFormat 对象。
toBrush,可选,绘制文本时要使用的 gpBrush 对象。
DrawStringW 方法
以指定的字体和位置绘制一个串(Unicode 版本)。
语法:THIS.DrawStringW( tcUnicodeString,[toFont],tvRectPoint,[toStringFormat],[toBrush])
返回值:逻辑型,表示成功或失败。
参数:
tcUnicodeString,必须,要绘制的 Unicode 串。
toFont,可选,指定要使用字体的 gpFont 对象。
tvRectPoint,必须,指定绑定矩形的 gpRect 对象,或指定坐上角的 gpPoint 对象。
toStringFormat,可选,gpStringFormat 对象
toBrush,可选,绘制文本时要使用的 gpBrush 对象。