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

影像的裁減及複製

尚未結案
yuck
一般會員


發表:7
回覆:3
積分:2
註冊:2008-11-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-21 12:34:59 IP:140.117.xxx.xxx 訂閱
當我執行貼上時就會發生問題
錯誤如檔案所示
請問這是什麼原因呢?
請版大指教 謝謝

[code cpp]
void __fastcall TForm1::Cut1Click(TObject *Sender)
{
Graphics::TBitmap *TheBitmap,*TempBitmap;
int Width, Height;
int TFX, TFY, BRX, BRY;
TRect SrcRect, DestRect;
//------讓TheBitmap為指向將被剪裁之影像的指標
TheBitmap=Image1->Picture->Bitmap;
//-----去除已畫在此影像上擬被減裁區域的外框
TheBitmap->Canvas->Draw(0,0,OrgBitmap);
//-------------------------------------------------------------------
//-----將擬被減裁區域傳至Clipboard----------------------
//-------------------------------------------------------------------
//-----產生一個新Bitmap元件並讓TempBitmap指向此元件
TempBitmap=new Graphics::TBitmap();
//-----計算被減裁區域寬及高
Width = abs(EndX - StartX );
Height = abs(EndY - StartY );
//-----計算被剪裁區域的左上及右下頂點之座標
TFX= ((EndX > StartX) ? StartX : EndX);
BRX= ((EndX > StartX) ? EndX : StartX);
TFY= ((EndY > StartY) ? StartY : EndY);
BRY= ((EndY > StartY) ? EndY : StartY);
//-----設定新產生的Bitmap元件為此被剪裁區域
TempBitmap->Width =Width;
TempBitmap->Height=Height;
TempBitmap->PixelFormat=pf24bit;
TempBitmap->Canvas->CopyMode=cmSrcCopy;
SrcRect=Rect(TFX, TFY, BRX, BRY);
DestRect=Rect(0, 0, Width, Height);
TempBitmap->Canvas->CopyRect(DestRect, TheBitmap->Canvas, SrcRect);
//-----將此新原件的內容複製至Clipboard
Clipboard()->Assign(TempBitmap);
//
//-----將被剪裁區域設為白色
TheBitmap->Canvas->Pen->Style=psSolid;
TheBitmap->Canvas->Pen->Mode=pmWhite;
TheBitmap->Canvas->Brush->Style=bsSolid;
TheBitmap->Canvas->Brush->Color=clWhite;
TheBitmap->Canvas->Rectangle(TFX,TFY,BRX,BRY);
//------------------------------
OrgBitmap->Assign(TheBitmap);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Copy1Click(TObject *Sender)
{
Graphics::TBitmap *TheBitmap,*TempBitmap;
int Width, Height;
int TFX, TFY, BRX, BRY;
TRect SrcRect, DestRect;
//------讓TheBitmap為指向將被複製之影像的指標
TheBitmap=Image1->Picture->Bitmap;
//-----去除已畫在此影像上擬被複製區域的外框
TheBitmap->Canvas->Draw(0,0,OrgBitmap);
//-------------------------------------------------------------------
//-----將擬被複製區域傳至Clipboard----------------------
//-------------------------------------------------------------------
//-----產生一個新Bitmap元件並讓TempBitmap指向此元件
TempBitmap=new Graphics::TBitmap();
//-----計算被複製區域寬及高
Width = abs(EndX - StartX);
Height = abs(EndY - StartY);
//-----計算被複製區域的左上及右下頂點之座標
TFX= ((EndX > StartX) ? StartX : EndX);
BRX= ((EndX > StartX) ? EndX : StartX);
TFY= ((EndY > StartY) ? StartY : EndY);
BRY= ((EndY > StartY) ? EndY : StartY);
//-----設定新產生的Bitmap元件為此被複製區域
TempBitmap->Width =Width;
TempBitmap->Height=Height;
TempBitmap->PixelFormat=pf24bit;
TempBitmap->Canvas->CopyMode=cmSrcCopy;
SrcRect=Rect(TFX, TFY, BRX, BRY);
DestRect=Rect(0, 0, Width, Height);
TempBitmap->Canvas->CopyRect(DestRect, TheBitmap->Canvas, SrcRect);
//-----將此新原件的內容複製至Clipboard
Clipboard()->Assign(TempBitmap);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Paste1Click(TObject *Sender)
{
Graphics::TBitmap *TheBitmap;
//----讓TheBitmap為指向將被貼上方塊之目的影像的指標
TheBitmap=Image1->Picture->Bitmap;
//---檢查Clipboard上是否有格式為Bitmap之影像---------
if (Clipboard()->HasFormat(CF_BITMAP))
{
//---將Clipboard影像複製到指標PasteImage所指向的Bitmap元件上
PasteBitmap->Assign(Clipboard()); <---------錯誤
//---將PasteImage所指向的Bitmap方塊顯示於目的影像中
TheBitmap->Canvas->Draw(0,0,PasteBitmap);
//---將此Bitmap方塊畫上黑色外框
TheBitmap->Canvas->Pen->Width=2;
TheBitmap->Canvas->Pen->Mode=pmBlack;
TheBitmap->Canvas->Brush->Style=bsClear; TheBitmap->Canvas->Rectangle(0,0,PasteBitmap->Width,
PasteBitmap->Height);
//----設Pasting_Enable為true讓使用者可藉由移動滑鼠來更改
//----此Bitmap方塊之顯示位置
Pasting_Enable=true;
}
}

[/code]
附加檔案:494dc7731dc4d_錯誤.rtf
編輯記錄
yuck 重新編輯於 2008-12-21 12:36:52, 註解 無‧
yuck 重新編輯於 2008-12-21 14:04:49, 註解 無‧
yuck 重新編輯於 2008-12-21 14:12:10, 註解 無‧
系統時間:2024-04-27 12:05:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!