Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.224.197] |
|
Сообщ.
#1
,
|
|
|
Вдруг возникают трудности там где их меньше всего ждешь.
На пикче требуется нарисовать многоугольник с заливкой ReDim p(1 To 4) As POINTAPI p(1).X = 20: p(1).Y = 500 p(2).X = 50: p(2).Y = 200 p(3).X = 150: p(3).Y = 300 p(4).X = 100: p(4).Y = 600 Pic.Scale (1, 1)-(256, 1000) Polygon Pic.hdc, p(1), 4 Pic.Refresh Изменение шкалы Pic.Scale (1, 1)-(1256, 3000) никак не отражается на рисунке. Почему? Почему Polygon не реагирует на изменение шкалы? И как же в таком случае можно нарисовать залитый многоугольник средствами vb? А мне еще и быстро надо. |
Сообщ.
#2
,
|
|
|
Потому что WinAPI ф-ции работают в пиксельной сетке и другие их не колышут ни коим образом. Просто переводи в пикселы:
p(1).X = pic.ScaleX(20, pic.ScaleMode, vbPixels) p(1).Y = pic.ScaleY(500, pic.ScaleMode, vbPixels) ' И т.п. |
Сообщ.
#3
,
|
|
|
ALXR, спасибо, все работает, правда я уже понял как это делать и написал
Sub drawPolygon(p() As POINTAPI, sW As Long, sH As Long, eW As Long, eH As Long) Dim i As Long: ReDim opa(1 To UBound(p)) As POINTAPI: Form1.Pic.Cls For i = 1 To UBound(p) 'opa(i).x = p(i).x * Form1.Pic.Width / (eW - sW) 'opa(i).y = p(i).y * Form1.Pic.Height / (eH - sH) opa(i).x = Form1.Pic.ScaleX(p(i).x, Form1.Pic.ScaleMode, vbPixels) opa(i).y = Form1.Pic.ScaleY(p(i).y, Form1.Pic.ScaleMode, vbPixels) Next Polygon Form1.Pic.hdc, opa(1), UBound(opa): Form1.Pic.Refresh End Sub ! п. 4 правил раздела Твои строчки и мои почти совпадают, но твои правильные, без выкрутас |
Сообщ.
#4
,
|
|
|
Народ, давайте на чистоту, про метод Paint кто нибудь слышал?
|
Сообщ.
#5
,
|
|
|
Цитата ANDLL @ про метод Paint кто нибудь слышал? Метод? Paint? Не слышал. А где ты его нашел? |
Сообщ.
#6
,
|
|
|
Эээ, в VB6 его нету? Жалко, а в gw-basic был....
|