線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1330
推到 Plurk!
推到 Facebook!

圖片旋轉的程式問題

尚未結案
candice
一般會員


發表:24
回覆:6
積分:6
註冊:2005-05-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-26 10:03:38 IP:222.156.xxx.xxx 未訂閱
大家好 我因為在做圖片旋轉的相關程式 所以來這裡爬文 然後找到了一個版主前輩寫的影像處理程式 但我有些地方不了解    想要請問一下    
 void __fastcall TForm1::Button7Click(TObject *Sender)
{
 Image2->AutoSize=true;
 int angle=StrToInt(Edit2->Text);
 Graphics::TBitmap *Bitmap1=new Graphics::TBitmap;
 Graphics::TBitmap *Bitmap2=new Graphics::TBitmap;//宣告兩個來做處理的空間
 
 Bitmap1->Assign(Image1->Picture->Bitmap);
 float radians=(2*3.1416*angle)/360;  //不了解為什麼要這樣設定呢
 float cosine=(float)cos(radians);
 float sine=(float)sin(radians);
 float Point1x=(-Bitmap1->Height*sine);
 float Point1y=(Bitmap1->Height*cosine);
 float Point2x=(Bitmap1->Width*cosine-Bitmap1->Height*sine);
 float Point2y=(Bitmap1->Height*cosine Bitmap1->Width*sine);
 float Point3x=(Bitmap1->Width*cosine);
 float Point3y=(Bitmap1->Width*sine);
 float minx=min(0,min(Point1x,min(Point2x,Point3x)));
 float miny=min(0,min(Point1y,min(Point2y,Point3y)));
 float maxx=max(Point1x,max(Point2x,Point3x));
 float maxy=max(Point1y,max(Point2y,Point3y));//以上都看不太懂
 int Bitmap2Width=(int)ceil(maxx-minx);
 int Bitmap2Height=(int)ceil(maxy-miny);
 Bitmap2->Height=Bitmap2Height;
 Bitmap2->Width=Bitmap2Width;
 for(int x=0;x=0&&Bitmap1xWidth&&Bitmap1y>=0&&Bitmap1yHeight)
   {
    Bitmap2->Canvas->Pixels[x][y]=Bitmap1->Canvas->Pixels[Bitmap1x][Bitmap1y];
   }
  }
}
Image2->Picture->Bitmap=Bitmap2;
delete Bitmap2;
delete Bitmap1;
我不太懂其中的運作是怎麼進行的 因為我用的工具是 vb.net 所以有些語法也轉不過來 還有再請教各位 我做的東西是假設讀進來的圖片是傾斜的 那我想要做到 譬如說讓程式自己計算出來傾斜15度 就自己轉15度轉成正的 算出來斜30度就自己轉30度 也就是我斜的影像讀進去 想要得到正的影像 那要怎麼從哪裡下手呢 謝謝大家
系統時間:2024-04-28 20:46:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!