Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про ПОЛИГОН, полигоны не подчиняются системе координа 
:(
    Опции темы
Гость_CompWorm
  Дата 26.1.2005, 17:23 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем Хэлоу!
вопросец про полигон нарисовался smile

...
With Picture1 'то, куда рисуем
.ScaleMode = vbUser
.ScaleTop = -.Height / 2
.ScaleLeft = -.Width / 2
.Pset (0,0), vbred
End With

...

Проще говоря красная точка нарисуется в центре Пыхчер-бокса, тк начало координат теперича там.

далее я совершаю попытку нарисовать там же полигон... smile

Option Explicit
Public Type POINTAPI
X As Long
Y As Long
End Type
Public ArrayPoint() As POINTAPI
Public Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long

...

Public Sub Poly() '

ReDim Preserve ArrayPoint(4)

ArrayPoint(0).X = -10
ArrayPoint(0).Y = -10
'''''
ArrayPoint(1).X = 10
ArrayPoint(1).Y = -10
'''''
ArrayPoint(2).X = 10
ArrayPoint(2).Y = 10
'''''
ArrayPoint(3).X = -10
ArrayPoint(3).Y = 10
''''''''''''''''
Polygon Form1.Picture1.hdc, ArrayPoint(0), 4
End Sub

условно говоря, POLY - САБ, рисующий квадратик в центре Пыхчера-бокса.

загвоздка в том, что рисует она квадратик в старой (обычной) системе координат.

PS координаты писал от балды, и исходник немного другой. не судите строго за ляпы (если они конечно имеются).

ну и вопрос викторины: я че-то упустил? как все таки нарисовать его, опираясь на новую систему координат?
  Вверх
cardinal
Дата 26.1.2005, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Напиши, свою функцию Polygon smile или просто сделай так:
Код

Private Sub Command1_Click()
Picture1.Line (-100, -100)-(100, -100), vbRed
Picture1.Line (100, -100)-(100, 100), vbRed
Picture1.Line (100, 100)-(-100, 100), vbRed
Picture1.Line (-100, -100)-(-100, 100), vbRed
Picture1.PSet (0, 0), vbRed
End Sub

(по коду становится понятно, как написать свою функцию Polygon )


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Guest
Дата 26.1.2005, 20:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ХА! целый день в инете по этой фигне! такой полигон рисовать я и сам могу. вот будет полезнее если ты скажешь, как его закрасить или в сеточку сделать. тогда я с удавольствием одобрю идею!
  Вверх
Gannibal
Дата 26.1.2005, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17



Код

'В модуле
Declare Function Polygon Lib "GDI" (ByVal hDC _
  As Integer, lpPoints As POINTAPI, ByVal nCount _
  As Integer) As Integer
  Type POINTAPI
    x As Integer
    y As Integer
  End Type
  Dim m1(1 to 4) as POINTAPI

'форме
' точки  функции, которая будет
' обрабатываться функцией Polygon
  m1(1).x = 130: m1(1).y = 40
  m1(2).x = 90: m1(2).y = 60
  m1(3).x = 80: m1(3).y = 90
  m1(4).x = 30: m1(4).y = 40
  fz% = Polygon(Form1.hDC, m1(1), 4)

Добавлено @ 21:28
http://www.vb.kiev.ua/ref/w32api/showdoc.php?f=polygon вот ссылочка про полигон ещё


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Naghual
Дата 26.1.2005, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



к Гость_CompWorm:

.ScaleMode = vbUser - чисто конкретно до одного места для функций/методов GDI.
Это все прикол для самого ВБ и его функций.

Работаеш с внешними функциями - работай по их правилам.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Гость_CompWorm
Дата 27.1.2005, 00:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











всем большое спасибо! smile
  Вверх
cardinal
Дата 27.1.2005, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(Guest @ 26.1.2005, 18:24)
как его закрасить

Почитай про метод Line.

А если
Цитата(Guest @ 26.1.2005, 18:24)
или в сеточку

то
Цитата(cardinal @ 26.1.2005, 18:18)
Напиши, свою функцию Polygon

То есть напиши функцию, которая будет рисовать полигон в picturebox по твоим правилам. Тот же scale ей передай в виде точки и она тебе точки полигона, который ты ей передашь сдвинет как тебе надо...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Гость_CompWorm
Дата 28.1.2005, 12:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ясно... но лучше я буду ZOOM-ировать сам POLYGON. я всё же пришел к выводу, что домножить координату легче написания целой подпрограммы по рисованию полигона. к тому же, как известно, любой GI бейсика быстрей, чем GI, написанный на нём.

еще раз всем спасибо и респект smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.