Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пиксельный размер picture / 11 сообщений из 11, страница 1 из 1
14.08.2008, 12:30
    #35487174
arhangel_GF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
есть вопрос как получить размер изображения Picture в пмкселях?
заранее благодарен
...
Рейтинг: 0 / 0
14.08.2008, 14:08
    #35487587
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
Picture1.Picture.Height, Picture1.Picture.Width
...
Рейтинг: 0 / 0
15.08.2008, 10:26
    #35488981
arhangel_GF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
AntonariyPicture1.Picture.Height, Picture1.Picture.Width
у мня получается не в пикселях. у меня олучается величина в 20 с лихим раза больше чем реальный размер который в свойствах!
...
Рейтинг: 0 / 0
15.08.2008, 10:42
    #35489025
arhangel_GF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
вот визо-
...
Рейтинг: 0 / 0
15.08.2008, 10:50
    #35489058
birk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
Единицу измерения измени
...
Рейтинг: 0 / 0
15.08.2008, 11:09
    #35489120
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
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
15.08.2008, 11:43
    #35489214
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
Черт. А я был уверен, что в пикселях.
...
Рейтинг: 0 / 0
15.08.2008, 12:28
    #35489369
arhangel_GF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
Бенедикт да последний способ проще но и самый неудобный тк используется вместо велечин размера изображения величина размера самого контейнера.
мне больше понравился первый через GetDeviceCaps
не подскажешь что надо на место nIndex ставить чтобы получить нужный размер ?
...
Рейтинг: 0 / 0
15.08.2008, 13:32
    #35489662
arhangel_GF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
всё нашёл. оказалось ещё проще чем твой пример Бенедикт!
вот код


Код: 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
15.08.2008, 15:07
    #35490005
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
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
16.08.2008, 16:23
    #35491086
arhangel_GF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пиксельный размер picture
просто супер! Спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / пиксельный размер picture / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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