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

觸發按鈕要在Form2秀出我要的圖檔…

尚未結案
sb055665
一般會員


發表:24
回覆:25
積分:14
註冊:2006-07-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-12 22:57:25 IP:59.117.xxx.xxx 未訂閱

我用一個combox選單裡頭的Item有例如:台北市、基隆市、台中市…

我想要當我點選台北市的時候,按一下查詢的按鈕,能夠在Form2 秀出台北市的地圖,請問這要如何做呢?

試了好久,還是試不出來,我有試過用書上提供的api但是還是無法秀出圖

pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-12 23:37:26 IP:219.84.xxx.xxx 未訂閱

請你把OnChange事件中的程式碼放上來吧,方便版上各個前輩幫你看看問題出來那。

sb055665
一般會員


發表:24
回覆:25
積分:14
註冊:2006-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-13 22:36:30 IP:59.117.xxx.xxx 未訂閱

這是書上所提供的API要套在我的程式裡…請各位先進幫忙看看那裡有問題!謝謝

//用Bitmap簡化Image1圖檔敘述
Graphics::TBitmap *Bitmap = Form2->Image1->Picture->Bitmap;

//取得指定檔案的完整路徑
char cdir[MAX_PATH];
char *bfile = "//gpsnew//image//中山高基隆端.bmp";
//將程式現在目錄所在填入此字元陣列
::GetCurrentDirectory( MAX_PATH, cdir);
//將現在目錄加上指定檔名
strcat( cdir, bfile);
//宣告圖檔結構
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER bmih;
//開啟指定檔案
HANDLE HFile = ::CreateFile(cdir, GENERIC_READ,
0, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
//
if (HFile != INVALID_HANDLE_VALUE)
{
DWORD dwRead;
//取得圖檔結構之相關資料
::ReadFile(HFile, &bmfh, sizeof(BITMAPFILEHEADER), &dwRead, NULL);
::ReadFile(HFile, &bmih, sizeof(BITMAPINFOHEADER), &dwRead, NULL);
//建立一新暫時設定,以利圖檔16位元轉成8位元時的最適化
BITMAPINFO bmi;
//將bmi結構所在記憶體初始化
memset(&bmi, 0, sizeof(BITMAPINFO));
//BITMAPINFO結構包含BITMAPINFOHEADER結構 RGBQUAD結構
//設定BITMAPINFOHEADER結構成員
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);//結構大小
bmi.bmiHeader.biWidth = Bitmap->Width;//圖素寬度
bmi.bmiHeader.biHeight = Bitmap->Height; //圖素高度
bmi.bmiHeader.biPlanes = 1;//目的裝置平面數,必為1
//轉換成 16 位元像素
bmi.bmiHeader.biBitCount = 16; // 16位元像素
bmi.bmiHeader = bmih;

//設定RGBQUAD結構成員
DWORD BitMasks[3];
BitMasks[0] = 0xFFFF;//Blue明亮度
BitMasks[1] = 0xFFFF;//Green明亮度
BitMasks[2] = 0xFFFF;//Red明亮度
//將設好的RGB結構填入RGBQUAD結構
memcpy(bmi.bmiColors, BitMasks, sizeof(BitMasks));
unsigned char *bits;
//將BITMAPINFO結構創造一新DIB圖檔,並傳回handle
//建立與指定DC相容的DC
HDC Hdc = ::CreateCompatibleDC(0);
//將BITMAPINFO結構創造一新DIB圖檔,並傳回handle
HBITMAP HBmp = ::CreateDIBitmap(Hdc, &bmih, CBM_INIT,
(BYTE *)sizeof(bmi) bmi.bmiHeader.biSize,
&bmi,
DIB_RGB_COLORS);

//建立與指定DC相容的DC
// HDC Hdc = ::CreateCompatibleDC(0);
//此處依照讀入圖檔之結構,繪出圖像至Form1的Image1中
HDC hdc = ::GetDC(Form2->Image1->Canvas->Handle);
//選定新物件,並傳回原有物件設定
// HBITMAP HOldBmp = ::SelectObject(Hdc, hdc);
if (HBmp)
{
//先由Image複製圖像至暫時設備
::BitBlt(hdc, 0, 0,
bmih.biWidth, bmih.biHeight,//Image1->Width*5, Image1->Height*5,//
Hdc, 0, 0,
SRCCOPY);

ShowMessage("成功讀取圖檔檔案!");
}
}
else
ShowMessage("讀取圖檔檔案失敗!");
//釋放handle
::CloseHandle(HFile);

orilly
一般會員


發表:0
回覆:6
積分:6
註冊:2006-07-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-15 15:58:18 IP:218.168.xxx.xxx 未訂閱

這個不用API,用VCL就辦的到吧

只要例如

form1被點選是"taipei"

image->loadfromfile("taipei.bmp");

不就可以嗎?!

小弟淺見..............我比較懶

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