Консультация № 19134
02.04.2005, 21:34
0.00 руб.
0 4 4
Здарвствуйте уважаемые эксперты. Помогите пожулайста решить возникший вопрос. Суть его заключается в том чтобы на VBA6.0 сделать форму в виде сердечка... для девушки небольшой сюрприз. Буду благодарен за любую оказанную помощь в решении этого вопроса.

Обсуждение

Неизвестный
02.04.2005, 22:18
общий
это ответ
Здравствуйте, Zdobnin_Pavel!
Если нужен пример ввиде проги, пиши мне на почту PavPS@List.ru - вышлю (но там не в форме сердечка...).
Неизвестный
03.04.2005, 12:56
общий
это ответ
Здравствуйте, Zdobnin_Pavel!
Есть примерчик на http://mastershome.net.ru/vbfaq/d10.htm, http://www.vbland.net/modules.php?name=News&file=print&sid=16
Ну и можешь попробовать программку Scanner http://vbscanner.narod.ru


Приложение:
Эта программа предназначена для тех, кто: * Хочет сделать программу с "кривой" формой * ——//—— и лениться её делать или не знает, как её сделать * Программирует на VB * этот список можно продолжать до бесконечности...Обзор основных возможностей программы: * создание "кривых форм" * создание "кривых" кнопок и всего что имеет дескриптор(hwnd)
Неизвестный
03.04.2005, 13:15
общий
это ответ
Здравствуйте, Zdobnin_Pavel!
Примитивное сердечко из формы я сделал так.
Можно делать без файла (но мне для оаытов было удобно так).
Структура файла: первое число - кол-во точек в полигоне. Далее в столбик поочередно чередуются Х, У координаты каждой точки полигона, например
8
0
20
20
0
25
20
30
0
50
20
50
50
25
100
0
50
Увеличив кол-во точек добъешся плавности переходов. Можно задать функцию расчета точек (этого я не знаю! у по высшей математике 3).
УДАЧИ


Приложение:
Dim RGNC As Integer, RGN_API() As POINTAPIPrivate Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As LongPrivate Declare Function SetWindowRgn Lib "user32" (ByVal HWND As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As LongPrivate Type POINTAPI X As Long Y As LongEnd TypeSub LoadRGN(FileName As String, HWND As Long)Dim i As Integer, REGION As LongOpen FileName For Input As #1Line Input #1, a RGNC = a ReDim RGN_API(0 To RGNC - 1) As POINTAPI ‘Ïåðåîáúÿâëÿåì ìàññèâ Do While Not EOF(1) Line Input #1, a RGN_API(i).X = a Line Input #1, a RGN_API(i).Y = a i = i + 1 LoopClose #1REGION = CreatePolygonRgn(RGN_API(0), RGNC, 2) ‘Ñîçäà¸ì ðåãèîíSetWindowRgn HWND, REGION, True ‘Ïðèìåíÿåì ðåãèîí íà îáúåêòEnd SubPrivate Sub Command1_Click()LoadRGN "D:\aaa.txt", Form1.HWNDEnd Sub
Неизвестный
03.04.2005, 13:15
общий
это ответ
Здравствуйте, Zdobnin_Pavel!
Копать в сторону <b>CreatePolygonRgn</a>, пример есть на <a href=http://www.vbnet.ru/faq/showtopic.asp?id=239 target=_blank>http://www.vbnet.ru/faq/showtopic.asp?id=239</a>.
PS у меня пример заработал только после того, как я заменил Rgn = CreatePolygonRgn(P(0), 428, <b>0</b>) на Rgn = CreatePolygonRgn(P(0), 428, <b>1</b>).
Форма ответа