請問將圖片切割N等分之較佳寫法 |
尚未結案
|
shing.net
中階會員 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: 一點點小程式,供你參考,希望對你能有一點幫助
procedure TForm1.Button4Click(Sender: TObject); VAR I,J : Integer; BMP1,BMP2,BMP3 : TBitMap; Width,Height : Integer; begin Width := ImageList2.Width; Height := ImageList2.Height; Image1.Picture.LoadFromFile('Windows 2000.jpg'); ImageList2.Clear; ImageList3.Clear; BMP1 := TBitMap.Create; BMP1.Assign(Image1.Picture.Graphic); FOR J := 1 TO 10 DO BEGIN FOR I := 1 TO 10 DO BEGIN BMP2 := TBitMap.Create; BMP2.Width := Width; BMP2.Height := Height; BMP3 := TBitMap.Create; BMP3.Width := ImageList3.Width; BMP3.Height := ImageList3.Height; BMP2.Canvas.BrushCopy(Rect(0,0,Width,Height),BMP1,Rect((I - 1) * Width,(J - 1) * Height,I * Width,J * Height),clWhite); SetStretchBltMode(BMP3.Canvas.Handle, COLORONCOLOR); StretchBlt(BMP3.Canvas.Handle, 0, 0, BMP3.Width, BMP3.Height, BMP2.Canvas.Handle, 0, 0,BMP2.Width, BMP2.Height, SrcCopy); ImageList2.Add(BMP2,NIL); ImageList3.Add(BMP3,NIL); BMP2.Free; BMP3.Free; END; END; BMP1.FREE; end; procedure TForm1.Button6Click(Sender: TObject); var x,y : Integer; BitMap : TBitMap; P : PByteArray; begin BitMap := TBitMap.Create; TRY BitMap.Assign(Image2.Picture.Bitmap); FOR y := 0 TO BitMap.Height -1 DO BEGIN P := BitMap.ScanLine[y]; FOR x := 0 TO BitMap.Width -1 DO BEGIN Image3.Canvas.Pixels[y,x] := BitMap.Canvas.Pixels[x,y]; END; END; FINALLY BitMap.Free; Image3.Refresh; END; end;原始圖檔 : 800 * 600 ImageList2 : 80 * 60 ImageList3 : 40 * 30 Image2 : 80 * 60 Image3 : 60 * 80 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |