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

有關繪圖之放大縮小功能設計

尚未結案
linfm1
一般會員


發表:1
回覆:1
積分:0
註冊:2005-05-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-11 10:35:53 IP:61.219.xxx.xxx 未訂閱
請教一個有關 在form上繪圖之後 要如何設計 可以放大縮小 及用滑鼠移動 圖畫的功能
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-11 16:27:58 IP:220.135.xxx.xxx 未訂閱
引言: 請教一個有關 在form上繪圖之後 要如何設計 可以放大縮小 及用滑鼠移動 圖畫的功能
linfm1你好: 放大縮小站內有很多文章,請先用站內搜尋功能參考"放大縮小"相關文章 或許有你想要的做法。至於移動圖畫你也可以搜尋圖片合併的文章找到你 想要的做法。
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-13 09:56:01 IP:210.80.xxx.xxx 未訂閱
引言: 請教一個有關 在form上繪圖之後 要如何設計 可以放大縮小 及用滑鼠移動 圖畫的功能
畫線的功能我沒做過,但在金禾 超上手C Builter 5 設計師入門手冊的第九章,可以找到類似"小畫家"的程式,你可以到書局找看看. 至於放大處理,可以參考這一段程式,是做放大2倍功能:
 
//---------------------------------------------------------------------------
void __fastcall TFMain::Button20Click(TObject *Sender)
{
   Graphics::TBitmap *TheBitmap,*TempBitmap,*NewBitmap;
  int Width, Height;      //COPY
  TheBitmap=Image1->Picture->Bitmap;      //  Make a copy of the selected image      TempBitmap=new Graphics::TBitmap();
  TempBitmap->Width =TheBitmap->Width*2;
  TempBitmap->Height=TheBitmap->Height*2;
  TempBitmap->PixelFormat=pf24bit;      int r=0;
  int s=0;
  for(int y=0;yHeight;y  )
  {
    for(int x=0;xWidth;x  )
      {
    TempBitmap->Canvas->Pixels[r][s]=TheBitmap->Canvas->Pixels[x][y];
    TempBitmap->Canvas->Pixels[r][s 1]=TheBitmap->Canvas->Pixels[x][y];
    TempBitmap->Canvas->Pixels[r 1][s]=TheBitmap->Canvas->Pixels[x][y];
    TempBitmap->Canvas->Pixels[r 1][s 1]=TheBitmap->Canvas->Pixels[x][y];
    r =2;
      }
    r=0;
    s =2;
  }      Clipboard()->Assign(TempBitmap);    // Paste
//-----------------------------------------------------------------      if (Clipboard()->HasFormat(CF_BITMAP))
   {
      FMain->Image1->AutoSize=true;
      TheBitmap->Assign(Clipboard());
   }
}
//---------------------------------------------------------------------------
寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin
linfm1
一般會員


發表:1
回覆:1
積分:0
註冊:2005-05-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-13 10:19:17 IP:210.69.xxx.xxx 未訂閱
其實 我真的有在討論區認真搜尋過 類似文章 但是 自己還是茫茫然 現在想到的方法是 在Form裡加入一個 Image元件 畫圖是畫在Image上 然後用CopyRect來處理放大縮小 但是效果不好 放大幾遍之後 解析度變的很差 目前也找到線性內插方式試著改善中 不知道這個方法跟KENI_LIN兄 所提的方法有什麼不同 但是 我還是覺得利用網格式的方法 好像沒有向量式好(我也還沒想出來除了重畫以外的方法) 所以 我現在還是繼續在找 一個可以不影響移動速度 又可以兼顧解析度的方法
KENI_LIN
中階會員


發表:86
回覆:267
積分:90
註冊:2004-05-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-13 16:25:41 IP:61.220.xxx.xxx 未訂閱
引言: 目前也找到線性內插方式試著改善中 不知道這個方法跟KENI_LIN兄 所提的方法有什麼不同
不好意思,我剛玩影像處裡沒多久,像線性內插法這類的影像幾何轉換,我沒有玩過(學習中);如上述的影像放大兩倍程式是參考修改出來的,真要說明這是用哪一種公式處理,我也說不出來! 簡單來說,很多幾何影像處理轉換是用來將原始圖做各種變化(二值化,灰階,放大等等)的處理,而放大對解析度來說,是會把原粒子(R,G,B Pixel)變大,太大的話就會產生像馬賽克的畫面!所以放大後的解析度,並不代表是清楚的定義,只是把圖像的顆粒變粗而已. 寒窗苦讀十年書;只待今朝狀元時!~~ ︵ / / ︵ ( ∩ ∩ ) ○ ︶ ○ Keni Lin
------
Keni Lin
dino1
一般會員


發表:6
回覆:6
積分:2
註冊:2005-01-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-18 00:58:56 IP:140.131.xxx.xxx 未訂閱
小弟剛玩影像沒多久,發言一下下: 因硬體的解析度是固定的,所以所謂的線性放大其結果會造成影像的模糊。而上面的大大所說的是利用重復點放大的結果,所以會有馬賽克現象。就這樣啦。 呵呵,不好意思哦打擾了!!感恩!!
系統時間:2024-05-13 7:28:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!