影像失真問題 |
尚未結案
|
glenn
一般會員 發表:24 回覆:21 積分:9 註冊:2004-03-08 發送簡訊給我 |
各位大大,
小弟現在想做一個可以複製自已於一影像Image1上所框選之區域,
並將其複製於Image2上,
所採用之影像為灰階影像,
但複製於Image2上後,發現顏色有失真問題,
我的影像為灰階影像,是8bit的,
為什麼會有失真問題呢??
下面是複製的函式:
Graphics::TBitmap *TheBitmap, *TempBitmap;
int Width, Height;
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);
//-----設定新產生的Bitmap元件為此被複製區域
TempBitmap->Width=Width;
TempBitmap->Height=Height;
TempBitmap->PixelFormat=pf8bit;
TempBitmap->Canvas->CopyMode=cmSrcCopy;
SrcRect=Rect(StartX, StartY, EndX, EndY);
DestRect=Rect(0, 0, Width, Height);
TempBitmap->Canvas->CopyRect(DestRect, TheBitmap->Canvas, SrcRect);
//-----將此新原件的內容複製至Clipboard
Clipboard()->Assign(TempBitmap); 而以下是Paste 的函式:
Graphics::TBitmap *TheBitmap;
//-----讓TheBitmap為指向將被貼上方塊之目的影像的指標
TheBitmap=Image2->Picture->Bitmap; //-----檢查Clipboard上是否有格式為Bitmap之影像-------------------------------
if(Clipboard()->HasFormat(CF_BITMAP))
{
PasteBitmap=new Graphics::TBitmap();
//-----將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);
|
glenn
一般會員 發表:24 回覆:21 積分:9 註冊:2004-03-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |