全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1757
推到 Plurk!
推到 Facebook!

在Image顯示和區域選取問題??

答題得分者是:ikk
kivers
一般會員


發表:5
回覆:1
積分:1
註冊:2008-02-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-07 22:31:41 IP:218.168.xxx.xxx 訂閱
#include 
#pragma hdrstop
#include "Unit1.h"
bool gbMDown=false;
TRect grtLTRB;
#define IMAGE_WIDTH 400<--這??
#define IMAGE_HEIGHT 400<--這??

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Panel1->Width=IMAGE_WIDTH 2*2;
Panel1->Height=IMAGE_HEIGHT 2*2;
Panel1->DoubleBuffered=true;
Panel2->Width=IMAGE_WIDTH 2*2;
Panel2->Height=IMAGE_HEIGHT 2*2;
Image1->Width=IMAGE_WIDTH;
Image1->Height=IMAGE_HEIGHT;
Image1->Left=(Panel1->Width-Image1->Width)/2;
Image1->Top=(Panel1->Height-Image1->Height)/2;
Image1->Stretch=true;
Image1->Picture->Bitmap->LoadFromFile("16bit-400x400.bmp");
PaintBox2->Width=IMAGE_WIDTH;
PaintBox2->Height=IMAGE_HEIGHT;
PaintBox2->Left=(Panel1->Width-PaintBox2->Width)/2;
PaintBox2->Top=(Panel1->Height-PaintBox2->Height)/2;
Image3->Width=IMAGE_WIDTH;
Image3->Height=IMAGE_HEIGHT;
Image3->Left=(Panel2->Width-Image3->Width)/2;
Image3->Top=(Panel2->Height-Image3->Height)/2;
Image3->Stretch=true;
Image3->Canvas->Brush->Color=clWhite;
Image3->Canvas->FillRect(Rect(0, 0, Image3->Width, Image3->Height));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
gbMDown=true;
grtLTRB.Left=X;
grtLTRB.Top=Y;
grtLTRB.Right=X;
grtLTRB.Bottom=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox2MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if(gbMDown)
{
if(X<0) X=0;
if(X>PaintBox2->Width) X=PaintBox2->Width;
if(Y<0) Y=0;
if(Y>PaintBox2->Height) Y=PaintBox2->Height;
PaintBox2->Canvas->CopyMode=cmSrcCopy;
PaintBox2->Canvas->CopyRect(grtLTRB, Image1->Canvas, grtLTRB);
grtLTRB.Right=X;
grtLTRB.Bottom=Y;
PaintBox2->Canvas->Brush->Style=bsClear;
PaintBox2->Canvas->Pen->Style=psDot;
PaintBox2->Canvas->Pen->Color=clBlack;
PaintBox2->Canvas->Rectangle(grtLTRB);
}
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox2MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
gbMDown=false;
PaintBox2->Canvas->CopyRect(Rect(0, 0, PaintBox2->Width, PaintBox2->Height),
Image1->Canvas, Rect(0, 0, Image1->Width, Image1->Height));
Image3->Canvas->FillRect(Rect(0, 0, Image3->Width, Image3->Height));
Image3->Canvas->CopyRect(grtLTRB, Image1->Canvas, grtLTRB);
Label2->Caption="被截取的區域: Rect(" IntToStr(grtLTRB.Left) ", "
IntToStr(grtLTRB.Top) ", " IntToStr(grtLTRB.Right) ", "
IntToStr(grtLTRB.Bottom) ")";
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
此為站上範例請問我想修改不指定矩陣大小....
就依開啟任何圖檔大小
我須再哪一行怎麼修改???
編輯記錄
kivers 重新編輯於 2008-04-09 00:56:43, 註解 無‧
kivers 重新編輯於 2008-04-09 00:58:01, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-09 09:32:42 IP:140.116.xxx.xxx 訂閱

把 IMAGE_WIDTH 設成變數即可, 再依讀入的圖檔大小更改數值
int IMAGE_WIDTH =400;
------
FPGA驗證, FPGA開發平台, http://smims.com
kivers
一般會員


發表:5
回覆:1
積分:1
註冊:2008-02-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-10 00:50:51 IP:218.168.xxx.xxx 訂閱

===================引 用 ikk 文 章===================

把 IMAGE_WIDTH 設成變數即可, 再依讀入的圖檔大小更改數值
int IMAGE_WIDTH =400;

====================
謝謝大大...可以了..真是感謝!!
系統時間:2024-04-25 14:32:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!