Как получить размеры битмапа в пикселях?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Как получить размеры битмапа в пикселях?

Сообщение Leon_ » 05.05.2005 (Чт) 11:37

Как получить размеры битмапа (пусть это файл C:\picture.bmp) в пикселях. Те самые значения, которые показывает Проводник в "Свойствах файла" -- высота= 123 точек, ширина= 45 точек. :?:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 05.05.2005 (Чт) 11:52

загрузи его в Image со свойством Stretch=True и посмотри потом его размеры

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 05.05.2005 (Чт) 11:59

Ну да, загрузил в Image (только Stretch=False). Как получить размеры в пикселях? Свойства Image.Width=9345, Height=7995. Это же не пиксели?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 05.05.2005 (Чт) 12:02

это твипы, а если подумать:

Код: Выделить всё
xPx=Image1.Width/ screen.TwipsPerPixelX
yPx=Image1.Height/ screen.TwipsPerPixelY

Leon_
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 333
Зарегистрирован: 19.05.2004 (Ср) 16:31
Откуда: Moscow

Сообщение Leon_ » 05.05.2005 (Чт) 12:07

:wink: Спасибо

PS: но если еще есть варианты без использования BITMAPINFOHEADER, прошу высказываться.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 05.05.2005 (Чт) 12:54

Ну можно ещё и так... без объектов на форме и без API. :wink:

Код: Выделить всё
Dim PIC As IPictureDisp
Dim PictureWidth As Long
Dim PictureHeight As Long
Private Sub Form_Load()
Set PIC = LoadPicture("C:\WINDOWS\SYSTEM32\setup.bmp")

PictureWidth = ScaleX(PIC.Width, vbHimetric, vbPixels)
PictureHeight = ScaleY(PIC.Height, vbHimetric, vbPixels)

MsgBox PictureWidth & " x " & PictureHeight

Set PIC = Nothing
End Sub

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 05.05.2005 (Чт) 18:57

Тю, зачем же его еще грузить? Достаточно посмотреть спецификацию bmp-формата. В определенных байтиках лежай высота и ширина битмапа. Далее читаем их, делаем несложные арифметические операции и готово. Домой прийду - закину :D
То, что для одних константа, для других только переменная...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 36

    TopList