![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вытищить и/или изменить разрешение BitMap [D6, WinXP]
AlexSt © (2006-11-05 15:08:00)Подскажите кто знает, как добраться до разрешения БМПешки, когда она загружена в TBitMap, те самые XPelsPerMeter и YPelsPerMeter? Я могу считать, если через стреам открыть файл и изменить хеадер, но хочеться сделать это в TBitMap, ведь оно там есть но добраться до него немогу.
Vovan#2 (2006-11-05 23:35:00) [1]>Впрочем как и весь класс tBitmap (ИМХО, но не без оснований)
Истина есть сиё.
AlexSt (2006-11-05 21:01:00) [2]
> Потому что сделана криво.
> Впрочем как и весь класс tBitmap (ИМХО, но не без оснований)
Ну что же, будет время перепишу TBitMap под себя с исправлением.
SamBrook (2006-11-05 20:50:00) [3]
> Да но в модуле Graphics спецально для этого введена GetDIB,
> которая теоретически должна это вытаскивать, но почему
> то она вытаскивает все, кроме этих двух полей.
Потому что сделана криво.
Впрочем как и весь класс tBitmap (ИМХО, но не без оснований)
AlexSt (2006-11-05 19:55:00) [4]
> В tbitmap эти сведения храняться в приватном поле.
> Поэтому через него - никак.
Да но в модуле Graphics спецально для этого введена GetDIB, которая теоретически должна это вытаскивать, но почему то она вытаскивает все, кроме этих двух полей.
SamBrook (2006-11-05 19:28:00) [5]В tbitmap эти сведения храняться в приватном поле.
Поэтому через него - никак.
В целом, эти данные могут быть очень полезными, но , к сожалению, большинство программ их игнорируют (за исключением, по моему, Imaging и Word).
Pavia (2006-11-05 19:15:00) [6]
> Разрешение BMP - справочные данные (разрешение графического
> устройства, в котором был выбран битмап перед сохранением),
> никакой существенной роли они не играют.
Играет просто виндоусу на него наплевать.
Ketmar (2006-11-05 18:21:00) [7]значит, система посчитала, что они нафиг не нужны при работе с битмапом в памяти. %-)
AlexSt (2006-11-05 18:15:00) [8]Да, мальчик есть. Если считать по первому ответу (хеадер из файла) все на месте.
Ketmar (2006-11-05 18:08:00) [9]>[5] AlexSt(c) 5-Nov-2006, 18:03
>Почему второй ответ дает нули. Что не так? Как может
>влиять система?
а эти значения вовсе и не обязаны быть прописаны. мальчик был вообще?
AlexSt (2006-11-05 18:03:00) [10]Почему второй ответ дает нули. Что не так? Как может влиять система?
AlexSt (2006-11-05 17:50:00) [11]Второй ответ сразу и не посмотрел, спасибо!
AlexSt (2006-11-05 17:24:00) [12]> http://www.efg2.com/Lab/Library/Delphi/Graphics/BMPPelsPerMeter.TXT
Я примерно так и сделал, но для этого мне сначала приходитьься сохранять битмап, а потом опять открывать файл и корректировать хеадер. Некрасиво! Хотелось бы непосредственно в битмапе.
>Разрешение BMP - справочные данные (разрешение графического >устройства, в котором был выбран битмап перед сохранением), никакой >существенной роли они не играют.
Разоешение экрана 96дпи меня не интересуют, меня интересует разрешение с которым будет печататься из граф. редактора.
Что возвращает GetObject?
Vovan#2 (2006-11-05 16:27:00) [13]http://www.efg2.com/Lab/Library/Delphi/Graphics/BMPPelsPerMeter.TXT
(см. второй ответ)
MBo (2006-11-05 16:18:00) [14]Разрешение BMP - справочные данные (разрешение графического устройства, в котором был выбран битмап перед сохранением), никакой существенной роли они не играют.
Ну если желание непреодолимо, GetObject можно использовать