讓圖片可以轉90度,Show不出來 |
答題得分者是:jow
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
-------------------------------------------------------------------
function SCRotateLeftBitmap(Bitmap : TBitmap) : TBitmap; var x,y : Integer; Hoogte, Breedte : Integer; begin Breedte:=Bitmap.Width; Hoogte:=Bitmap.Height; Result := TBitmap.Create; try with Result do begin Width:=Hoogte; Height:=Breedte; for x:=0 to Breedte-1 do for y:=0 to Hoogte-1 do Canvas.Pixels[Hoogte-y-1,x]:=Bitmap.Canvas.Pixels[x,y]; end; except Result.Free; raise; end; end; ---------------------------------------------------------------- 上述的程式段是翻了某版大的寫作,主要是讓圖片可以轉90度 小弟做了一個button內容如下: image2.Picture.Bitmap.Assign(SCRotateLeftBitmap(image1.Picture.Bitmap)); image2.Canvas.Refresh; image1是讀入一個jpg的圖檔了,但去執行上面那兩行,image2卻無法承現出轉90度的畫面 請問大大們可以指引一下方向,應該如何做才可以Show 圖跟轉向呢???
------
初學、初學、學了很久...還是在初學階段..Orz |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
[code delphi] unit fMain; interface uses Graphics, Forms, ExtCtrls, StdCtrls, Controls, Classes, SysUtils; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private function SCRotateLeftBitmap(src: TBitmap; var dest: TBitmap): Boolean; end; var Form1: TForm1; implementation {$R *.dfm} function TForm1.SCRotateLeftBitmap(src: TBitmap; var dest: TBitmap): Boolean; var X, Y: Integer; begin FreeAndNil(dest); if Assigned(src) and (src.Width > 0) and (src.Height > 0) then begin dest := TBitmap.Create; try dest.Width := src.Height; dest.Height := src.Width; for X := 0 to src.Width-1 do for Y := 0 to src.Height-1 do dest.Canvas.Pixels[src.Height-Y-1,X] := src.Canvas.Pixels[X,Y]; except FreeAndNil(dest); end; end; Result := dest <> nil; end; procedure TForm1.Button1Click(Sender: TObject); var src, dest: TBitmap; begin src := Image1.Picture.Bitmap; dest := nil;//initial if SCRotateLeftBitmap(src, dest) then try Canvas.Draw(10,10,dest); finally FreeAndNil(dest); end; end; end. [/code] |
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
謝謝Jaw大大指導,也讓小弟知道一些之前自已的問題
[code delphi] procedure TForm1.Button1Click(Sender: TObject); var j_in:TJPEGImage;//自已新增的部份 src, dest: TBitmap; begin j_in := TJPEGImage.Create;//自已新增的部份 j_in.LoadFromFile('e:\1.jpg');//自已新增的部份 image1.Picture.Bitmap.Assign(j_in);//自已新增的部份 src := Image1.Picture.Bitmap; dest := nil;//initial if SCRotateLeftBitmap(src, dest) then BEGIN try image1.Picture.Assign(dest); //Canvas.Draw(1,1,dest); finally FreeAndNil(dest); end; END ELSE showmessage('Error'); end; [/code] 另外,似乎如果遇到Jpeg的檔案,好像是不能直接做轉向的處理,上述改的部份,希望可以呈現在同一個Image,就如同AcdSee的功能一樣..@@ 另外,請問觀念性的問題,在處理Jpeg,Bmp,在Delphi中他的處理方式是不是以Bmp為主,如:Jpg要做一些圖形上的動作,如上述的轉向,要先轉成Bmp,是否有其中的原理??
------
初學、初學、學了很久...還是在初學階段..Orz |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |