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

影像檔結合問題

答題得分者是:RaynorPao
hjlin
一般會員


發表:63
回覆:48
積分:22
註冊:2003-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-14 08:53:18 IP:61.56.xxx.xxx 未訂閱
我想要寫一個可以開啟前景,與後景的影像結合程式,當我按LOAD前景時,可以任意選一張前景圖,LOAD背景圖時,也可以任意選一張背景圖,問題是,我要如何把這兩張圖,儲存成一張NEW影像檔? 底下程式我有用到Drag-Drop功能,但效果很差,順便幫我解一下,要如何讓這功能更靈敏更順暢~~感恩啊!!    //---------------------------------------------------------------------------    #include  #pragma hdrstop #include "Main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Edit1->Text = ""; Edit3->Text = ""; } //--------------------------------------------------------------------------- void __fastcall TForm1::BackgroundClick(TObject *Sender) { if(OpenPictureDialog1->Execute()) { Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::SpriteClick(TObject *Sender) { if(OpenPictureDialog1->Execute()) { Image2->Picture->LoadFromFile(OpenPictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2DragDrop(TObject *Sender, TObject *Source, int X, int Y) { TImage *buf = (TImage *)Source; buf->Left = X; buf->Top = Y; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { Accept = true; Edit1->Text = X; Edit3->Text = Y; }
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-14 11:08:47 IP:203.73.xxx.xxx 未訂閱
引言: 我想要寫一個可以開啟前景,與後景的影像結合程式,當我按LOAD前景時,可以任意選一張前景圖,LOAD背景圖時,也可以任意選一張背景圖,問題是,我要如何把這兩張圖,儲存成一張NEW影像檔? 底下程式我有用到Drag-Drop功能,但效果很差,順便幫我解一下,要如何讓這功能更靈敏更順暢~~感恩啊!! //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Edit1->Text = ""; Edit3->Text = ""; } //--------------------------------------------------------------------------- void __fastcall TForm1::BackgroundClick(TObject *Sender) { if(OpenPictureDialog1->Execute()) { Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::SpriteClick(TObject *Sender) { if(OpenPictureDialog1->Execute()) { Image2->Picture->LoadFromFile(OpenPictureDialog1->FileName); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2DragDrop(TObject *Sender, TObject *Source, int X, int Y) { TImage *buf = (TImage *)Source; buf->Left = X; buf->Top = Y; } //--------------------------------------------------------------------------- void __fastcall TForm1::Image2DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { Accept = true; Edit1->Text = X; Edit3->Text = Y; }
hjlin 你好: 試試看以下的程式碼
   Image1->Width=256;
   Image1->Height=224;
   Image1->Stretch=true;
   Image1->Picture->Bitmap->LoadFromFile("back.bmp");       Image2->Width=100;
   Image2->Height=123;
   Image2->Stretch=true;
   Image2->Picture->Bitmap->LoadFromFile("fore.bmp");       Image3->Width=Image1->Width;
   Image3->Height=Image1->Height;
   Image3->Stretch=true;
   Image3->Canvas->CopyMode=cmSrcCopy;
   SetStretchBltMode(Image3->Canvas->Handle, STRETCH_HALFTONE);
   Image3->Canvas->CopyRect(Rect(0, 0, Image3->Width, Image3->Height),
      Image1->Canvas, Rect(0, 0, Image1->Width, Image1->Height));       Image4->Width=Image2->Width;
   Image4->Height=Image2->Height;
   Image4->Left=Image3->Left;
   Image4->Top=Image3->Top;
   Image4->Stretch=true;
   Image4->Canvas->CopyMode=cmSrcCopy;
   SetStretchBltMode(Image4->Canvas->Handle, STRETCH_HALFTONE);
   Image4->Canvas->CopyRect(Rect(0, 0, Image4->Width, Image4->Height),
      Image2->Canvas, Rect(0, 0, Image2->Width, Image2->Height));
   Image4->Picture->Bitmap->TransparentColor=clWhite;
   Image4->Transparent=true;
   Application->ProcessMessages();       TPoint ptLT1, ptRB1, ptLT2, ptRB2;
   ptLT1.x=Image3->Left;
   ptLT1.y=Image3->Top;
   ptRB1.x=Image3->Left Image3->Width;
   ptRB1.y=Image3->Top Image3->Height;
   ptLT2=Form1->ClientToScreen(ptLT1);
   ptRB2=Form1->ClientToScreen(ptRB1);       HDC dc;
   dc=GetDC(0);
   TCanvas *canvas=new TCanvas;
   canvas->Handle=dc;
   Graphics::TBitmap *bmp=new Graphics::TBitmap;
   bmp->Width=Image3->Width;
   bmp->Height=Image3->Height;
   bmp->Canvas->CopyMode=cmSrcCopy;
   SetStretchBltMode(bmp->Canvas->Handle, STRETCH_HALFTONE);
   bmp->Canvas->CopyRect(Rect(0, 0, bmp->Width, bmp->Height),
      canvas, Rect(ptLT2.x, ptLT2.y, ptRB2.x, ptRB2.y));
   bmp->SaveToFile("merge.bmp");
   delete bmp;
   delete canvas;
   ReleaseDC(NULL, dc);
相關連結: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33868 -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/07/14 17:21:39 發表人 - RaynorPao 於 2003/07/14 19:59:51
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
hjlin
一般會員


發表:63
回覆:48
積分:22
註冊:2003-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-14 18:44:44 IP:61.56.xxx.xxx 未訂閱
包子老大: 你這個程式,我已經可以run了,非常謝謝~~ 但還是想問一個問題,我如果將前景圖任意移動位置時,(Drag-drop方法) merge後的圖檔會跟隨著改變嗎? 我發覺前景圖好像永遠停在左上角說~~~
RaynorPao
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-14 20:04:36 IP:61.221.xxx.xxx 未訂閱
引言: 包子老大: 你這個程式,我已經可以run了,非常謝謝~~ 但還是想問一個問題,我如果將前景圖任意移動位置時,(Drag-drop方法) merge後的圖檔會跟隨著改變嗎? 我發覺前景圖好像永遠停在左上角說~~~
hjlin 你好:
(1)拜託~~別再叫我老大了,怪怪的
( >
( ><><>
   >>>>>
    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-07-31 23:24:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!