全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1815
推到 Plurk!
推到 Facebook!

為什麼輸入中文所出現結果是亂碼?

尚未結案
Drake
一般會員


發表:3
回覆:3
積分:1
註冊:2003-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-24 15:06:03 IP:203.70.xxx.xxx 未訂閱
底下是我在討論區查尋到的程式碼 原本是Delphi,我轉成BCB 確輸入中文時會出現亂碼 其於都正常,why??? 我show在Image上的字如何成正比率的放大? 也就是我抓到1個點(pixel值)要變成4個點(也就是放大4倍)    
  int i, xPos, iTxtWidth;
  String str, sfont;
  TLogFont lf;      sfont = ComboBox1->Text;//"新細明體", "標楷體";
  str = Edit1->Text.c_str();      GetObject(Form1->Font->Handle, sizeof(TLogFont), &lf);
  try
  {
    i = 1;
    xPos = 0;        while (i <= str.Length())
    {
      if(IsDBCSLeadByte(Byte(str[i])))
      {
        if(ComboBox3->ItemIndex == 0)
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }
        else if(ComboBox3->ItemIndex == 1)
        {
          lf.lfWidth = 16;
          lf.lfHeight = 16;
        }
        else
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }            StrPCopy(lf.lfFaceName, sfont);
        lf.lfEscapement = 0; // 這行不可 mark 掉
        //lf.lfOrientation = 900; // 字轉 90 度(這行可要可不要,要的時候值須與 lfEscapement 相同)
        lf.lfItalic = 0; // 0 正常 1:斜體
        Image1->Canvas->Font->Handle = CreateFontIndirect(&lf);
        Image1->Canvas->Font->Color = clRed;
        Image1->Canvas->TextOut(xPos, 0, str[i]   str[i 1]); // y 座標從最底層開始畫,才不會轉了 90 度後,字都看不見了
        iTxtWidth = Image1->Canvas->TextWidth(str[i]   str[i 1]);
        i  = 2;
      }
      else
      {
        if(ComboBox3->ItemIndex == 0)
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }
        else if(ComboBox3->ItemIndex == 1)
        {
          lf.lfWidth = 12;
          lf.lfHeight = 8;
        }
        else
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }            //lf.lfFaceName = "Arial";
        StrPCopy(lf.lfFaceName, ComboBox1->Text);            lf.lfEscapement = 0; // 這行不拿掉
        //lf.lfOrientation = 0; // 這行可拿掉
        lf.lfItalic = 0;
        Image1->Canvas->Font->Handle = CreateFontIndirect(&lf);
        Image1->Canvas->Font->Color = clRed;
        Image1->Canvas->TextOut(xPos, 0, str[i]);
        iTxtWidth = Image1->Canvas->TextWidth(str[i]);
        i  ;
      }
      xPos = xPos   iTxtWidth;
    }
  }
  catch (...)
  {}
發表人 - drake 於 2005/03/24 15:22:09 發表人 - drake 於 2005/03/24 15:23:20
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-24 21:41:15 IP:219.84.xxx.xxx 未訂閱
引言: 底下是我在討論區查尋到的程式碼 原本是Delphi,我轉成BCB 確輸入中文時會出現亂碼 其於都正常,why??? 我show在Image上的字如何成正比率的放大? 也就是我抓到1個點(pixel值)要變成4個點(也就是放大4倍)
  int i, xPos, iTxtWidth;
  String str, sfont;
  TLogFont lf;      sfont = ComboBox1->Text;//"新細明體", "標楷體";
  str = Edit1->Text.c_str();      GetObject(Form1->Font->Handle, sizeof(TLogFont), &lf);
  try
  {
    i = 1;
    xPos = 0;        while (i <= str.Length())
    {
      if(IsDBCSLeadByte(Byte(str[i])))
      {
        if(ComboBox3->ItemIndex == 0)
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }
        else if(ComboBox3->ItemIndex == 1)
        {
          lf.lfWidth = 16;
          lf.lfHeight = 16;
        }
        else
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }            StrPCopy(lf.lfFaceName, sfont);
        lf.lfEscapement = 0; // 這行不可 mark 掉
        //lf.lfOrientation = 900; // 字轉 90 度(這行可要可不要,要的時候值須與 lfEscapement 相同)
        lf.lfItalic = 0; // 0 正常 1:斜體
        Image1->Canvas->Font->Handle = CreateFontIndirect(&lf);
        Image1->Canvas->Font->Color = clRed;
        Image1->Canvas->TextOut(xPos, 0, str[i] + str[i+1]); // y 座標從最底層開始畫,才不會轉了 90 度後,字都看不見了
        iTxtWidth = Image1->Canvas->TextWidth(str[i] + str[i+1]);
        i += 2;
      }
      else
      {
        if(ComboBox3->ItemIndex == 0)
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }
        else if(ComboBox3->ItemIndex == 1)
        {
          lf.lfWidth = 12;
          lf.lfHeight = 8;
        }
        else
        {
          lf.lfWidth = 24;
          lf.lfHeight = 24;
        }            //lf.lfFaceName = "Arial";
        StrPCopy(lf.lfFaceName, ComboBox1->Text);            lf.lfEscapement = 0; // 這行不拿掉
        //lf.lfOrientation = 0; // 這行可拿掉
        lf.lfItalic = 0;
        Image1->Canvas->Font->Handle = CreateFontIndirect(&lf);
        Image1->Canvas->Font->Color = clRed;
        Image1->Canvas->TextOut(xPos, 0, str[i]);
        iTxtWidth = Image1->Canvas->TextWidth(str[i]);
        i++;
      }
      xPos = xPos + iTxtWidth;
    }
  }
  catch (...)
  {}
Drake 你好:
(1)請善用本站的搜尋功能,相關主題已經有現成的參考資料
(>    < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing --
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
Drake
一般會員


發表:3
回覆:3
積分:1
註冊:2003-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-29 16:34:45 IP:203.70.xxx.xxx 未訂閱
不好意思,可能是我的問題沒說的粉詳細 我在討論區所查尋到的程式碼原本是Delphi,我轉成BCB    1.在Edit輸入中文時在Image所出shwo出來的是亂碼, 而英文一確都正常,在Delphi下執行輸入中文、英文都沒問題, 在BCB下執行輸入中文就是會出現亂碼,不知道是那裡出錯? ,麻煩個位前輩能不能幫我看一下 >
系統時間:2024-05-17 18:18:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!