VB6: как переключаться на пиксели вместо твипов - PullRequest
5 голосов
/ 02 мая 2011

Я выполняю рефакторинг приложения VB6.Измерения любого из контролей в два раза.Возможно ли в VB6 установить элемент управления для использования пикселей вместо twips ?Спасибо

Ответы [ 5 ]

8 голосов
/ 03 мая 2011

Раньше я много работал с масштабным режимом, и все, что я могу сказать, это не беспокоиться.Он не был должным образом универсально поддерживаемым, что означало, что в конечном итоге вы все равно будете конвертировать обратно в твипы.

VB6 основан на твипах, нравится вам это или нет, так что если вы попытаетесь сделать что-то на пиксельной основе, вы будете бороться с током весь путь.

К счастью, VB.net, наконец, все это закончил и полностью основан на пикселях, вы все равно можете изменить масштабирование области просмотра, но .net, кажется, справляется с этим гораздо лучше, чемVB6.

7 голосов
/ 03 мая 2011
dim iInPixels as integer
dim iInTwips as integer

iInPixels = 200
iInTwips  = iInPixels * Screen.TwipsPerPixelX
iInPixels = iInTwips / Screen.TwipsPerPixelX

Как сказал @drventure, вы будете грести против течения весь путь, но на самом деле это не так уж и плохо, если вы можете изолировать логику в одном месте.

7 голосов
/ 02 мая 2011

Помогает ли свойство ScaleMode ?

Возвращает или задает значение, указывающее единицу измерения для координат объекта при использовании графических методов или при позиционировании элементов управления.

3 голосов
/ 02 мая 2011

Статья базы знаний Майкрософт: Как преобразовать твипы в пиксели

Ссылка выше для Access VBA, но будет работать и с VB6. Я не знаю нативную функциональность VB6, чтобы делать то, что вам нужно. Из того, что я помню, ScaleMode не будет работать для того, что вы хотите сделать (несмотря на то, что, похоже, оно существует для решения вашей точной проблемы).

РЕДАКТИРОВАТЬ : Пока я размышлял об этом, ScaleMode не решил мою проблему, с которой я столкнулся в то время. В зависимости от того, что вы пытаетесь сделать, это может решить вашу проблему. Я, конечно, сначала попробую, так как он даст более простой и более понятный код.

1 голос
/ 27 июля 2017

Я так и сделал.Я получил Twips от Form1.Picture.Width и, разделив на пиксели, вы получите пиксели в любом месте в скрипте VB6.В общих декларациях
Const pixelize As Double = 26.45833333

Command3.Caption = "Pixels:" & Int (Form1.Picture.Width / pixelize) & "x"& Int (Form1.Picture.Height / pixelize)

Работает для меня, может быть, вам помогли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...