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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Залитые полигоны... без API! 
:(
    Опции темы
Kurt
Дата 13.10.2003, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

Репутация: нет
Всего: 36



Здравствуйте!
Во время моей скромной программистской деятельности возникла
острая нужда нарисовать залитые полигоны на форме.
Все бы ничего, но мне надо это сделать именно методами формы,
без API!
Как это сделать?
Подозреваю, что надо использовать Line... или нет?
Буду искренне рад ответу - надо очень..


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Mephisto
  Дата 14.10.2003, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Код
Option Explicit

Private Sub Command1_Click()
   Me.FillColor = vbGreen
   Line (1000, 1000)-(1500, 1500), vbRed, B
   Circle (2000, 2000), 100, vbBlue
End Sub


Enjoy it!
PM   Вверх
Kurt
Дата 15.10.2003, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

Репутация: нет
Всего: 36



Сорри, я чего-то не понял - этот код выдает НЕзалитые красный квадрат и синий круг.
Мне нужны закрашенные полигоны, причем "нестандартные" - т.е. не только прямоугольник и круг.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Black_Star
Дата 19.10.2003, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Эхм... тогда только АПИ smile.gif
А чем АПИшки тебя так пугают?
PM ICQ   Вверх
Alles
Дата 23.10.2003, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

Private Sub Command1_Click()
  Me.FillColor = vbGreen
  Line (1000, 1000)-(1500, 1500), vbRed, BF
End Sub


Там букву F добавь и будут залитые. А вот с радиусом ...Хм.. тут надо подумать. Но лучше помоему API
PM MAIL ICQ   Вверх
Vach
Дата 23.10.2003, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Полностью согласен, API проще всего. И быстрее чем свой алгоритм ваять.
Цитата "Советы тем, кто программирует на VB & VBA" и тамже пример.
Цитата
Те, кто работал с QuickBasic (в среде DOS), возможно, помнят, что там был оператор PAINT, который позволял заливать поверхности фигур произвольных очертаний. В системе VB этот оператор отсутствует и встроенные VB-функции позволяют выполнять заливку только "стандартных" фигур, например прямоугольника или круга, что явно недостаточно для решения многих графических задач.

PM MAIL ICQ   Вверх
Unregistered
Дата 25.10.2003, 23:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











'Рендеринг одноцветного треугольника
[CODE]
Sub DrawTriangle(DrawnedForm As Form, Tri As Triangle)
On Error Resume Next
Set FM = DrawnedForm
Dim C As Double, Tmp, D As POINTAPI
'FM.Line (Tri.A.x, Tri.A.y)-(Tri.B.x, Tri.B.y)
'FM.Line -(Tri.C.x, Tri.C.y)
'FM.Line -(Tri.A.x, Tri.A.y)
If Tri.A.y > Tri.B.y Then D = Tri.A: Tri.A = Tri.B: Tri.B = D 'сортировка по y
If Tri.A.y > Tri.C.y Then D = Tri.A: Tri.A = Tri.C: Tri.C = D
If Tri.B.y > Tri.C.y Then D = Tri.B: Tri.B = Tri.C: Tri.C = D
For i = Tri.A.y To Tri.C.y
X1 = Tri.A.x + (i - Tri.A.y) * (Tri.C.x - Tri.A.x) / (Tri.C.y - Tri.A.y)
If i < Tri.B.y Then
X2 = Tri.A.x + (i - Tri.A.y) * (Tri.B.x - Tri.A.x) / (Tri.B.y - Tri.A.y)
Else
X2 = Tri.B.x + (i - Tri.B.y) * (Tri.C.x - Tri.B.x) / (Tri.C.y - Tri.B.y)
If X1 > X2 Then Tmp = X1: X1 = X2: X2 = Tmp
End If

FM.Line (X1, i)-(X2, i)

Next
End Sub
  Вверх
Unregistered
Дата 25.10.2003, 23:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











[CODE]

Public Type POINTAPI
x As Long
y As Long
z As Long
End Type
Public Type Triangle
A As POINTAPI
B As POINTAPI
C As POINTAPI
End Type

  Вверх
Kurt
Дата 26.10.2003, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

Репутация: нет
Всего: 36



ОГО!!!
Сейчас будем разбираться.
Спасибо. biggrin.gif


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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