Image上放上text |
尚未結案
|
jcee
一般會員 發表:2 回覆:1 積分:0 註冊:2004-05-16 發送簡訊給我 |
我正在寫一個類似小畫家的程式
並且想要加入可以輸入文字在TImage上的功能
不過我希望能調整字的角度
所以似乎得用LOGFONT來做
不過這樣把文字輸到Image上後就不能調整位置
請問這樣要怎麼解決呢 我原本是想把它輸出到另一個transparent的Image上
然後再合成到原來的底圖上
不過這張Image不知道要怎麼隨文字輸入的大小來改變它的大小 另外有個問題..就是用LOGFONT然後TextOut
是不是沒有辦法做換行的動作
因為我是透過一個TMemo來輸入
所以希望能把TMemo裡的文字忠實的輸出 煩請高手給點提示
謝謝!!!
|
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
字型的旋轉請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=35619
並在Button1中加入Image1->Canvas->Font->Size=100; //100為字型大小
試試看 此外image的大小可以利用下列程式碼取得image大小
如果要換行,則在Height把所有要顯示的字串高度加起來即可
注意不要忘了,字串寬度要取max喔
Graphics::TBitmap *source=new Graphics::TBitmap(); source->PixelFormat =pf24bit; source->HandleType=bmDIB; source->Canvas->Font->Size = 12; source->Height=source->Canvas->TextHeight("字串"); source->Width=source->Canvas->TextWidth("字串"); source->Canvas->TextOut("字串"); delete source; |
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
上封有個小bug,現修正如下
Graphics::TBitmap *source=new Graphics::TBitmap(); source->PixelFormat =pf24bit; source->HandleType=bmDIB; source->Canvas->Font->Size = 12; int pos1=source->Canvas->TextHeight("字串一"); int pos2=pos1 source->Canvas->TextHeight("字串二"); source->Height=pos2 source->Canvas->TextHeight("字串三"); source->Width=max( source->Canvas->TextWidth("字串一"),source->Canvas->TextWidth("字串二") ); source->Width=max( source->Canvas->TextWidth("字串三"),source->Width ); source->Canvas->TextOut(0,0,"字串一"); source->Canvas->TextOut(0,pos1,"字串二"); source->Canvas->TextOut(0,pos2,"字串三"); delete source; |
jcee
一般會員 發表:2 回覆:1 積分:0 註冊:2004-05-16 發送簡訊給我 |
謝謝~~抓text的width和height是沒問題了 還有另一個問題
我想用TMemo來寫文字
然後把寫下來的文字按照TMemo上的文字排列方法輸出到image上
也就是若TMemo中若有換行
我也能按照換行輸出到image上
我是想到用strtok來把換行符號抓出來
不過一直會跑出亂碼 下面是我的code
可以請問一下是哪裡出了問題嗎 int ImageHeight = 0;
int ImageWidth = 0;
char *LineData; LineData = strtok(RichEdit1->Lines->Text.c_str(),"\n"); for(int i = 0; i < RichEdit1->Lines->Count; i ){ ImageHeight = ImageHeight Image1->Canvas->TextHeight(LineData);
ImageWidth = (Image1->Canvas->TextWidth(LineData) > ImageWidth)?Image1->Canvas->TextWidth(LineData):ImageWidth;
Form1->Image1->Height = ImageHeight;
Form1->Image1->Width = ImageWidth; GetObject(Image1->Canvas->Font->Handle, sizeof(LOGFONT), &logfont);
logfont.lfEscapement = 10*StrToInt(Angle*90);
logfont.lfOrientation = 10*StrToInt(Angle*90);
logfont.lfOutPrecision = OUT_TT_ONLY_PRECIS;
Image1->Canvas->Font->Handle = CreateFontIndirect(&logfont); SetGraphicsMode(Image1->Canvas->Handle, GM_ADVANCED); Image1->Canvas->Brush->Color = clWhite;
Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height)); Form1->Image1->Canvas->Brush->Style = bsClear;
Form1->Image1->Canvas->Font->Color = ColorDialog1->Color;
Form1->Image1->Canvas->TextOut(0, ImageHeight-Image1->Canvas->TextHeight(LineData), LineData); LineData = strtok(NULL, "\n");
}
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |