Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.59.31] |
|
Сообщ.
#1
,
|
|
|
Привет всем! Ребят, подскажите пожалуйста как мне узнать высоту и ширину битмапа из буфера обмена, но без использования дополнительных переменных типа TBitmap. Может можно как-нибудь через WinAPI?
|
Сообщ.
#2
,
|
|
|
Можно попробовать с помощью GetClipboardData получить битмап в буфер, а потом по заголовку пройтись, там поля есть где размеры изображения указаны. Тока ИМХО с TBitmap проще будет...
|
Сообщ.
#3
,
|
|
|
Цитата 5nizza @ как мне узнать высоту и ширину битмапа из буфера обмена В формате CF_BITMAP в буфере содержится хэндл битмапа - читаем его через GetClipboardData и определяем размеры по GetBitmapDimensionEx |
Сообщ.
#4
,
|
|
|
Ребят, в общем:
var BH: HBITMAP; TS: tagSIZE; begin BH := GetClipboardData(CF_BITMAP); GetBitmapDimensionEx(BH, TS); Caption := IntToStr(TS.cx) + ' ~ ' + IntToStr(TS.cy); В любых случаях возвращается ноль. Может я что не так сделал? |
Сообщ.
#5
,
|
|
|
А открывать\закрывать клипборд кто будет ?
OpenClipboard(0); ... CloseClipboard; К тому же в дельфи есть объект (функция) clipboard uses clipbrd; with clipboard do begin //можно попробовать и без open,close т.к. они есть в GetAsHandle, //но строго говоря валидность возвращаемого хэндла гарантируется только при открытом клипборде open; BH:=GetAsHandle(CF_BITMAP); GetBitmapDimensionEx(BH, TS); close; end; |