影像的裁減及複製 |
尚未結案
|
yuck
一般會員 發表:7 回覆:3 積分:2 註冊:2008-11-12 發送簡訊給我 |
當我執行貼上時就會發生問題
錯誤如檔案所示 請問這是什麼原因呢? 請版大指教 謝謝 [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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |