hjlin
一般會員
發表:63 回覆:48 積分:22 註冊:2003-02-11
發送簡訊給我
|
我現在遇到一個圖檔結合的問題,希望你能幫我解答,我現在就是想做一個可以同時download 背景圖與物件圖的程式,然後問題是,我背景圖檔是用一個Image來開啟,而物件圖也是用一個Image來開啟,開啟的位置為一個位置,所以這樣看起來就有點像圖檔merge的功用一般,但問題來了,我要如何把Merge後的檔案save起來呢?因為兩個各分別位在不同的Image中??謝謝~~~
|
tech_state
版主
發表:44 回覆:638 積分:641 註冊:2003-02-10
發送簡訊給我
|
|
RaynorPao
版主
發表:139 回覆:3622 積分:7025 註冊:2002-08-12
發送簡訊給我
|
引言:
我現在遇到一個圖檔結合的問題,希望你能幫我解答,我現在就是想做一個可以同時download 背景圖與物件圖的程式,然後問題是,我背景圖檔是用一個Image來開啟,而物件圖也是用一個Image來開啟,開啟的位置為一個位置,所以這樣看起來就有點像圖檔merge的功用一般,但問題來了,我要如何把Merge後的檔案save起來呢?因為兩個各分別位在不同的Image中??謝謝~~~
hjlin 你好:
請問?? 你所說的 merge 是像以下這個樣子嗎(範例程式碼)??
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<><>
備註:
你是不是還有很多問題都還沒有結案呢??>>
------ -- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
|
hjlin
一般會員
發表:63 回覆:48 積分:22 註冊:2003-02-11
發送簡訊給我
|
為何我的"merge.bmp"讀不到東東?? //--------------------------------------------------------------------------- #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->Bitmap->LoadFromFile(OpenPictureDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpriteClick(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
{
Image2->Picture->Bitmap->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)
{
if (Accept == true)
{
Edit1->Text = X;
Edit3->Text = Y;
}
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *bmp=new Graphics::TBitmap;
bmp->Canvas->CopyMode=cmSrcAnd;
SetStretchBltMode(bmp->Canvas->Handle, STRETCH_HALFTONE);
bmp->Canvas->CopyRect(Rect(0, 0, 256, 224),
Image1->Canvas,Rect(0, 0, 256, 224));
bmp->Canvas->CopyRect(Rect(0, 0, 256, 224),
Image2->Canvas,Rect(0, 0, 256, 224));
bmp->SaveToFile("merge.bmp");
Image3->Picture->LoadFromFile("merge.bmp");
delete bmp;
}
//---------------------------------------------------------------------------
|
hjlin
一般會員
發表:63 回覆:48 積分:22 註冊:2003-02-11
發送簡訊給我
|
|
RaynorPao
版主
發表:139 回覆:3622 積分:7025 註冊:2002-08-12
發送簡訊給我
|
|
hjlin
一般會員
發表:63 回覆:48 積分:22 註冊:2003-02-11
發送簡訊給我
|
hjlin 你好:
試試看把程式碼改成以下這個樣子
Image1->Width=256;
Image1->Height=224;
Image1->Stretch=true;
Image1->Picture->Bitmap->LoadFromFile("back.bmp");
Image2->Width=100;
Image2->Height=124;
Image2->Stretch=true;
Image2->Picture->Bitmap->LoadFromFile("fore.bmp");
Image3->Width=256;
Image3->Height=224;
Image3->Stretch=true;
Image3->Canvas->CopyMode=cmSrcAnd;
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));
Image3->Canvas->CopyRect(Rect(0, 0, Image2->Width, Image2->Height),
Image2->Canvas, Rect(0, 0, Image2->Width, Image2->Height));
Image3->Picture->Bitmap->SaveToFile("merge.bmp"); "merge.bmp" 還是看不到
|
taishyang
站務副站長
發表:377 回覆:5490 積分:4563 註冊:2002-10-08
發送簡訊給我
|
hjlin您好:
如圖所示
我測試是可以看到的,BCB5.0 WinXp
並且merge.bmp會存在您的專案資料夾裡
您是否應將答題得分者指定為RaynorPao呢?? 發表人 - taishyang 於 2003/07/14 13:27:46
|
hjlin
一般會員
發表:63 回覆:48 積分:22 註冊:2003-02-11
發送簡訊給我
|
以下是我的完整程式~~我的問題出在哪邊呢?
非常疑惑~~~ #ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include
#include
#include
#include <Forms.hpp>
#include
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMainMenu *MainMenu1;
TMenuItem *LOAD1;
TMenuItem *Background;
TMenuItem *Edit2;
TMenuItem *Sprite;
TImage *Image1;
TOpenPictureDialog *OpenPictureDialog1;
TImage *Image2;
TEdit *Edit1;
TEdit *Edit3;
TLabel *Label1;
TLabel *Label2;
TButton *Button1;
TImage *Image3;
void __fastcall SpriteClick(TObject *Sender);
void __fastcall BackgroundClick(TObject *Sender);
void __fastcall Image2DragDrop(TObject *Sender, TObject *Source, int X,
int Y);
void __fastcall Image2DragOver(TObject *Sender, TObject *Source, int X,
int Y, TDragState State, bool &Accept);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif //--------------------------------------------------------------------------- #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->Bitmap->LoadFromFile(OpenPictureDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpriteClick(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
{
Image2->Picture->Bitmap->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)
{
if (Accept == true)
{
Edit1->Text = X;
Edit3->Text = Y;
}
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Graphics::TBitmap *bmp=new Graphics::TBitmap;
Image1->Width=256;
Image1->Height=224;
Image1->Stretch=true;
Image1->Picture->Bitmap->LoadFromFile("back.bmp");
Image2->Width=180;
Image2->Height=180;
Image2->Stretch=true;
Image2->Picture->Bitmap->LoadFromFile("fore.bmp");
Image3->Width=256;
Image3->Height=224;
Image3->Stretch=true;
Image3->Canvas->CopyMode=cmSrcAnd;
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));
Image3->Canvas->CopyRect(Rect(0, 0, Image3->Width, Image3->Height),
Image2->Canvas, Rect(0, 0, Image2->Width, Image2->Height));
Image3->Picture->Bitmap->SaveToFile("merge.bmp"); //delete bmp;
}
//---------------------------------------------------------------------------
|