关于 SetBitmapDimensionEx 函数的问题! |
尚未結案
|
tiger18504
一般會員 發表:10 回覆:7 積分:3 註冊:2004-09-13 發送簡訊給我 |
|
likush
高階會員 發表:5 回覆:235 積分:103 註冊:2002-10-08 發送簡訊給我 |
提供您一些相關說明,希望對您有幫助,英文不怎好,無法舉出實例及詳加說明,摘自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 發送簡訊給我 |
引言: 提供您一些相關說明,希望對您有幫助,英文不怎好,無法舉出實例及詳加說明,摘自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 發送簡訊給我 |
|
tiger18504
一般會員 發表:10 回覆:7 積分:3 註冊:2004-09-13 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
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 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
呵呵!繁體字都會寫。厲害!厲害! 後來我發覺這個函數,根本是無用武之地(沒作用的)。
這個函數,有點類似註解功能。 請看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);
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |