powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пиксельный размер picture
11 сообщений из 11, страница 1 из 1
пиксельный размер picture
    #35487174
arhangel_GF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть вопрос как получить размер изображения Picture в пмкселях?
заранее благодарен
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35487587
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Picture1.Picture.Height, Picture1.Picture.Width
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35488981
arhangel_GF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyPicture1.Picture.Height, Picture1.Picture.Width
у мня получается не в пикселях. у меня олучается величина в 20 с лихим раза больше чем реальный размер который в свойствах!
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35489025
arhangel_GF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот визо-
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35489058
birk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единицу измерения измени
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35489120
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arhangel_GF,
Измерения Picture1.Picture.Height, Picture1.Picture.Width даются в HIMETRIC-логических единицах (сотые доли миллиметра). Можно перевести их в пиксели, используя GetDeviceCaps(), можно считать структуру BITMAP или DIBSECTION, иcпользуя GetObjectA(), и взять размеры оттуда, и т. п., но, наверное, проще всего сделать так:
Код: plaintext
1.
2.
3.
 Picture1.ScaleMode = vbPixels
 Picture1.AutoSize = True
 Picture1.Picture = LoadPicture("C:\Test.jpg")
 Debug.Print Picture1.ScaleWidth, Picture1.ScaleHeight
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35489214
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт. А я был уверен, что в пикселях.
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35489369
arhangel_GF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикт да последний способ проще но и самый неудобный тк используется вместо велечин размера изображения величина размера самого контейнера.
мне больше понравился первый через GetDeviceCaps
не подскажешь что надо на место nIndex ставить чтобы получить нужный размер ?
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35489662
arhangel_GF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё нашёл. оказалось ещё проще чем твой пример Бенедикт!
вот код


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
W = ScaleX(Picture1.Picture.Width, vbHimetric, vbPixels)
H = ScaleX(Picture1.Picture.Height, vbHimetric, vbPixels)
W = Int(W)
H = Int(H)

Me.Caption = "мой размер картинки :" & W & " X " & H

...
Рейтинг: 0 / 0
пиксельный размер picture
    #35490005
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arhangel_GFвсё нашёл. оказалось ещё проще чем твой пример Бенедикт!Да, с ScaleX/ScaleY лучше (для H надо вызывать ScaleY).

Вариант с GetDeviceCaps():
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Declare Function GetDeviceCaps Lib "gdi32" ( _
   ByVal hDC As Long, ByVal nIndex As Long) As Long
Private Const LOGPIXELSX =  88         '  Logical pixels/inch in X
Private Const LOGPIXELSY =  90         '  Logical pixels/inch in Y

Private Declare Function CreateIC Lib "gdi32" Alias "CreateICA" ( _
   ByVal lpDriverName As String, ByVal lpDeviceName As String, _
   ByVal lpOutput As String, lpInitData As Any) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long

Private Const HimetricPerInch =  2540 

Public Sub Test()
 Dim hicRef As Long
 Dim Pic As StdPicture
 Dim W As Long, H As Long
 Set Pic = LoadPicture("C:\Test.jpg")
 
 hicRef = CreateIC("DISPLAY", vbNullString, vbNullString, ByVal  0 &)
 W = Pic.Width * GetDeviceCaps(hicRef, LOGPIXELSX) / HimetricPerInch
 H = Pic.Height * GetDeviceCaps(hicRef, LOGPIXELSY) / HimetricPerInch
 DeleteDC hicRef
 Debug.Print W, H
End Sub
...
Рейтинг: 0 / 0
пиксельный размер picture
    #35491086
arhangel_GF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
просто супер! Спасибо!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пиксельный размер picture
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]