關於圖片檔的開啟 |
尚未結案
|
fanbaby
一般會員 發表:4 回覆:3 積分:1 註冊:2005-08-01 發送簡訊給我 |
|
bass15
高階會員 發表:24 回覆:171 積分:119 註冊:2003-10-27 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
fanbaby
一般會員 發表:4 回覆:3 積分:1 註冊:2005-08-01 發送簡訊給我 |
請問一下
以下程式,
是否已將圖檔轉為BITMAP,
因RUN程式已沒有錯誤,
但實際卻又不能改變圖片大小,
測試已可以將JPG讀入。 if (OpenPictureDialog1->Execute())
{ TJPEGImage* JPG = new TJPEGImage();
JPG->LoadFromFile(OpenPictureDialog1->FileName);
Graphics::TBitmap* BMP = new Graphics::TBitmap();
Image2->Picture->Bitmap->Assign(JPG);
JPG->Assign(Image2->Picture->Bitmap);
BMP->Assign(JPG);
BMP->Width=Image2->Picture->Width;
BMP->Height=Image2->Picture->Height; delete JPG;
delete BMP;
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
插花:参考:http://delphi.ktop.com.tw/topic.php?topic_id=23474
摘hagar前辈所答: procedure TForm1.Button3Click(Sender: TObject); var jpg:TJpegImage; bmp,tmpbmp:TBitmap; begin jpg :=TJpegImage.Create; if OpenPictureDialog1.Execute then begin jpg.LoadFromFile(OpenPictureDialog1.FileName); bmp :=TBitmap.Create; bmp.Assign(jpg); tmpbmp :=TBitmap.Create; tmpbmp.Width :=bmp.Width div 2; tmpbmp.Height :=bmp.Height div 2; StretchBlt(tmpbmp.Canvas.Handle,0,0,tmpbmp.Width,tmpbmp.Height, bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,SRCCOPY); jpg.Assign(tmpbmp); jpg.SaveToFile('f:\2.jpg'); end; jpg.Free; bmp.Free; tmpbmp.Free; end; 小弟对BCB不熟,您自行修改试试。============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
fanbaby 妳好: 在妳的範例中有一大段是可以省略掉的,我將它用紅色標示出來如下:
if (OpenPictureDialog1->Execute()) { TJPEGImage* JPG = new TJPEGImage(); JPG->LoadFromFile(OpenPictureDialog1->FileName); Graphics::TBitmap* BMP = new Graphics::TBitmap(); Image2->Picture->Bitmap->Assign(JPG); JPG->Assign(Image2->Picture->Bitmap); BMP->Assign(JPG); BMP->Width=Image2->Picture->Width; BMP->Height=Image2->Picture->Height; delete JPG; delete BMP; }換言之;妳無需用到 TBitmap 來做轉存動作,在我的範例中之所以會用上 TBitmap 當暫存,是因為我要處理多種圖檔的原因,如果妳僅處理 JPEG 格式的圖檔,是不需要用到轉存動作的。 另外妳所說的改變圖片大小指的是什麼呢?如果是 Image2 的圖框大小未隨著讀入的圖檔做縮放的話,妳可以將 Image2 的 AutoSize 屬性設為 true,如果妳是說讀入的圖檔未能按比例縮小或放大圖像內容至 Image2 現有圖框內,那麼就將 Image2 的 Stretch 屬性設為 true 即可。 7 天天敲鍵盤 v 時時按滑鼠 8 |
fanbaby
一般會員 發表:4 回覆:3 積分:1 註冊:2005-08-01 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
fanbaby 妳好:
引言:其實主要目的是要能在照片上畫畫或貼圖, 但要繪畫圖片只能使用TBitmap, 這是我開啟JPG後要改TBitmap的原因。 那此段程式是否已將圖檔轉為BITMAP了呢?程式敘述中的 Image2->Picture->Bitmap->Assign(JPG); 就是將 JPG 的內容轉為點陣圖後設給 Image2 的 Bitmap 了,之後妳已經可以在 Image2 的 Bitmap (Image2->Picture->Bitmap) 上做相關的繪圖、貼圖動作或其它的處理了。 我之所以說以紅色標示的那一段可以省略掉,是因為妳將 JPG 設給 BMP 之後,並未做任何處理,接著就下達 delete BMP; 的敘述將 BMP 刪除掉了,因此 BMP 從宣告到刪除掉都沒有發揮任何作用,所以我說它可以省略掉。 7 天天敲鍵盤 v 時時按滑鼠 8 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |