線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1706
推到 Plurk!
推到 Facebook!

Image上放上text

尚未結案
jcee
一般會員


發表:2
回覆:1
積分:0
註冊:2004-05-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-16 23:57:02 IP:61.219.xxx.xxx 未訂閱
我正在寫一個類似小畫家的程式 並且想要加入可以輸入文字在TImage上的功能 不過我希望能調整字的角度 所以似乎得用LOGFONT來做 不過這樣把文字輸到Image上後就不能調整位置 請問這樣要怎麼解決呢 我原本是想把它輸出到另一個transparent的Image上 然後再合成到原來的底圖上 不過這張Image不知道要怎麼隨文字輸入的大小來改變它的大小 另外有個問題..就是用LOGFONT然後TextOut 是不是沒有辦法做換行的動作 因為我是透過一個TMemo來輸入 所以希望能把TMemo裡的文字忠實的輸出 煩請高手給點提示 謝謝!!!
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-17 14:59:04 IP:211.21.xxx.xxx 未訂閱
字型的旋轉請參考 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-17 15:06:54 IP:211.21.xxx.xxx 未訂閱
上封有個小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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-18 21:23:55 IP:61.219.xxx.xxx 未訂閱
謝謝~~抓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"); }
系統時間:2024-05-18 15:32:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!