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

关于 SetBitmapDimensionEx 函数的问题!

尚未結案
tiger18504
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-20 00:12:07 IP:220.112.xxx.xxx 未訂閱
SetBitmapDimensionEx()这个函数可以重新设置位图的尺寸吗?如何使用呢?
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-22 23:04:01 IP:220.134.xxx.xxx 未訂閱
提供您一些相關說明,希望對您有幫助,英文不怎好,無法舉出實例及詳加說明,摘自HELP BOOL SetBitmapDimensionEx( HBITMAP hBitmap, //handle of bitmap int nWidth, // 圖的建議寬度,以0.1mm為單位 int nHeight, // 圖的建議長度,以0.1mm為單位 LPSIZE lpSize // address of structure for original dimensions ); 返回值 TRUE表示成功,FALSE表示失敗。會回傳GetLastError ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-23 14:25:35 IP:202.39.xxx.xxx 未訂閱
引言: 提供您一些相關說明,希望對您有幫助,英文不怎好,無法舉出實例及詳加說明,摘自HELP BOOL SetBitmapDimensionEx( HBITMAP hBitmap, //handle of bitmap int nWidth, // 圖的建議寬度,以0.1mm為單位 int nHeight, // 圖的建議長度,以0.1mm為單位 LPSIZE lpSize // address of structure for original dimensions ); 返回值 TRUE表示成功,FALSE表示失敗。會回傳GetLastError ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
請問一下, LPSIZE那個參數該如何傳入? (如果我不想傳入nil,而是想傳入影像原來的dimensions)
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-23 14:46:28 IP:61.222.xxx.xxx 未訂閱
var Bsize : TSize; begin BSize.cx := BSize.cy :=
tiger18504
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-23 23:30:28 IP:220.112.xxx.xxx 未訂閱
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-24 00:00:37 IP:61.31.xxx.xxx 未訂閱
An application can retrieve the dimensions assigned to a bitmap with the SetBitmapDimensionEx function by calling the GetBitmapDimensionEx function. The bitmap identified by hBitmap cannot be a DIB section, which is a bitmap created by the CreateDIBSection function. If the bitmap is a DIB section, the SetBitmapDimensionEx function fails. 請注意看一下上述資料 for msdn 如果您的 Bitmp 為 DIB 模式 這個函數,是沒有作用。 我依稀記得 Bitmap 預設好像是 DIB ,不知道對不對 明天在幫你查一下
tiger18504
一般會員


發表:10
回覆:7
積分:3
註冊:2004-09-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-24 18:52:40 IP:220.112.xxx.xxx 未訂閱
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-26 11:39:39 IP:61.31.xxx.xxx 未訂閱
呵呵!繁體字都會寫。厲害!厲害! 後來我發覺這個函數,根本是無用武之地(沒作用的)。 這個函數,有點類似註解功能。 請看HELP The GetBitmapDimensionEx function retrieves the dimensions of a bitmap. The retrieved dimensions must have been set by the SetBitmapDimensionEx function. The GetMapDimensionEx function replaces the GetMapDimension function. 照上面意思說明,要GetBitmapDimensionEx 之前必須要 SetBitmapDimensionEx 而SetBitmapDimensionEx 最後的 LPSIZE 指的是前一次設定的SIZE; 故我說這個功能有點像檔案註解的味道,就是如此。 也就是說,您可以設定以一毫米的十分之一為單位的寬度或長度 事實上,對圖片一點點作用都沒有。 我做了以下實驗 procedure TForm1.Button1Click(Sender: TObject); var BMP : TBitmap; ASize : TSize; begin BMP := TBitmap.Create; Try BMP.LoadFromFile('c:\A.BMP'); if SetBitmapDimensionEx(BMP.Handle,1000,1000,@ASize) then Showmessage(inttostr(ASize.cX) ':' inttostr(ASize.cY)); if GetBitmapDimensionEx(BMP.Handle,ASize) then Showmessage(inttostr(ASize.cX) ':' inttostr(ASize.cY)); if SetBitmapDimensionEx(BMP.Handle,1000,1000,@ASize) then Showmessage(inttostr(ASize.cX) ':' inttostr(ASize.cY)); finally BMP.Free; end; end; 也就是說有Set...才能 Get.... 另外依據我對繪圖軟件的認識。 所謂分辨率分為 Display 96 DPI/ Printer 300 DPI 當您建立 100*100 Pixels 範圍圖,使用 96 DPI 既使在後來改為 300 DPI 也是沒有用處 軟件作法,只不過使用放大圖片(在打印的時候)的作用 仍然會產生因放大而變得圖片模糊 如果一開始建立圖片使用 300 DPI 只不將圖片大小變大了。 因此我的結論是,所謂分辨率 是由繪圖軟件去控制的。 以下示範捉取 BMP Header var DS: TDIBSection; BMP : TBitmap; Bytes: Integer; begin BMP := TBitmap.Create; Try BMP.LoadFromFile('c:\A.BMP'); Bytes := GetObject(BMP.Handle, SizeOf(DS), @DS);
系統時間:2024-04-29 3:23:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!