Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Разукраска


Автор: Gannibal 27.11.2004, 16:01
функции для покраски ФОРМЫ, как её можно изменить неупотребляя картинок просто цветами полностю обясните или пример покажите smile

Автор: cardinal 27.11.2004, 16:58
http://hrestomvb.h11.ru/faq/faq_43.php

Автор: COLOMBO 27.11.2004, 19:56
Дак это же просто:
Создаёшь например кнопку и прописываеш:
Код

Private Sub Command1_Click()
Form1.BackColor = &HC0& 'Красим в красный цвет по нажатию кнопки
End Sub

И всё smile

Автор: ~FoX~ 30.11.2004, 09:40
Код

Private Sub Command1_Click()
For Y = 1 To kol
       For X = 1 To kol
           a(X, Y) = 0
       Next X
   Next Y
   radius = 250 ' радиус ячейки в пикселя
   kol = 20 ' Количество рядов
   a(Int(kol / 2), 0) = 1 ' первая единица, от которой и растет треугольник
   DrawWidth = 1 ' Толщина линии
   For Y = 0 To kol
       For X = 1 To kol
           sdvig = radius / 2 * (-1) ^ Y ' Сдвиг каждого ряда то влево, то вправо
           If Y > 0 Then
               If sdvig > 0 Then
                   a(X, Y) = a(X + 1, Y - 1) + a(X - 0, Y - 1)
               Else
                   a(X, Y) = a(X + 0, Y - 1) + a(X - 1, Y - 1)
               End If
           End If
           X1 = 60 + X * radius * 2 + sdvig
           Y1 = 10 + Y * radius * 1.7
           If a(X, Y) > 0 Then
               ForeColor = RGB(0, 0, 0)
               Form1.PSet (X1, Y1), RGB(255, 255, 255)
               Print a(X, Y)
           End If
       Next X
   Next Y
End Sub

Private Sub Command2_Click()
   For Y = 1 To kol
       For X = 1 To kol
           a(X, Y) = 0
       Next X
   Next Y
   radius = 250 ' радиус ячейки в пикселя
   kol = 20 ' Количество рядов
   a(Int(kol / 2), 0) = 1 ' первая единица, от которой и растет треугольник
   DrawWidth = 1 ' Толщина линии
   For Y = 0 To kol
       For X = 1 To kol
           sdvig = radius / 2 * (-1) ^ Y ' Сдвиг каждого ряда то влево, то вправо
           If Y > 0 Then
               If sdvig > 0 Then
                   a(X, Y) = a(X + 1, Y - 1) + a(X - 0, Y - 1)
               Else
                   a(X, Y) = a(X + 0, Y - 1) + a(X - 1, Y - 1)
               End If
           End If
           X1 = 60 + X * radius * 2 + sdvig
           Y1 = 10 + Y * radius * 1.7
           FillStyle = 0
           FillColor = RGB(255, 255, 255) ' Цвет заливки
           If a(X, Y) > 0 Then
               If a(X, Y) Mod 2 = 1 Then
                   FillColor = RGB(0, 0, 0)
                   Circle (X1, Y1), radius, RGB(90, 90, 90)
               End If
           End If
       Next X
   Next Y
End Sub

Private Sub Command3_Click()
   For Y = 1 To kol
   For X = 1 To kol
       a(X, Y) = 0
   Next X
   Next Y
   radius = 250 ' радиус ячейки в пикселя
   kol = 20 ' Количество рядов
   a(Int(kol / 2), 0) = 1 ' первая единица, от которой и растет треугольник
   DrawWidth = 1 ' Толщина линии
   For Y = 0 To kol
       For X = 1 To kol
           sdvig = radius / 2 * (-1) ^ Y ' Сдвиг каждого ряда то влево, то вправо
           If Y > 0 Then
               If sdvig > 0 Then
                   a(X, Y) = a(X + 1, Y - 1) + a(X - 0, Y - 1)
               Else
                   a(X, Y) = a(X + 0, Y - 1) + a(X - 1, Y - 1)
               End If
           End If
           X1 = 60 + X * radius * 2 + sdvig
           Y1 = 10 + Y * radius * 1.7
           FillStyle = 0
           r = 0: g = 0: b = 0
           If a(X, Y) > 0 Then
               If (a(X, Y) - Int(a(X, Y) / 2) * 2) = 0 Then r = 250
               'If (a(X, Y) / 4) - Int(a(X, Y) / 4) = 0 Then r = 120
               'If (a(X, Y) / 8) - Int(a(X, Y) / 8) = 0 Then r = 180
               'If (a(X, Y) / 16) - Int(a(X, Y) / 16) = 0 Then r = 250
               'If (a(X, Y) / 3) -  Int(a(X, Y) / 3) = 0 Then g = 60
               If (a(X, Y) / 9) - Int(a(X, Y) / 9) = 0 Then g = 250
               'If (a(X, Y) / 7) - Int(a(X, Y) / 7) = 0 Then g = 180
               'If (a(X, Y) / 5) - Int(a(X, Y) / 5) = 0 Then g = 250
               If (a(X, Y) / 11) - Int(a(X, Y) / 11) = 0 Then b = 250
               'If (a(X, Y) / 13) - Int(a(X, Y) / 13) = 0 Then b = 120
               'If (a(X, Y) / 17) - Int(a(X, Y) / 17) = 0 Then b = 180
               'If (a(X, Y) / 19) - Int(a(X, Y) / 19) = 0 Then b = 250
               ForeColor = RGB(r, g, b)
               FillColor = RGB(r, g, b) ' Цвет заливки
               Circle (X1, Y1), radius, RGB(90, 90, 90)
           End If
       Next X
   Next Y
End Sub

Рисует на форме треугольник паскаля, цветной, с цифорками.
Добавлено @ 09:42
Ой забыл, закоментированный строчки, можно разкоментить и получишь другие цвета заполнения кружков.
Код

               'If (a(X, Y) / 4) - Int(a(X, Y) / 4) = 0 Then r = 120
               'If (a(X, Y) / 8) - Int(a(X, Y) / 8) = 0 Then r = 180
               'If (a(X, Y) / 16) - Int(a(X, Y) / 16) = 0 Then r = 250
               'If (a(X, Y) / 3) -  Int(a(X, Y) / 3) = 0 Then g = 60
               If (a(X, Y) / 9) - Int(a(X, Y) / 9) = 0 Then g = 250
               'If (a(X, Y) / 7) - Int(a(X, Y) / 7) = 0 Then g = 180
               'If (a(X, Y) / 5) - Int(a(X, Y) / 5) = 0 Then g = 250
               If (a(X, Y) / 11) - Int(a(X, Y) / 11) = 0 Then b = 250
               'If (a(X, Y) / 13) - Int(a(X, Y) / 13) = 0 Then b = 120
               'If (a(X, Y) / 17) - Int(a(X, Y) / 17) = 0 Then b = 180
               'If (a(X, Y) / 19) - Int(a(X, Y) / 19) = 0 Then b = 250

Автор: cardinal 30.11.2004, 15:35
А а() это что?

Автор: ~FoX~ 30.11.2004, 16:22
Простите, забыл.
Код

Dim a(100, 100) As Double
Dim radius As Byte, i As Byte, kol As Byte
Dim sdvig As Integer, X As Integer, Y As Integer, X1 As Integer, Y1 As Integer

Автор: cardinal 30.11.2004, 21:00
Цитата
Рисует на форме треугольник паскаля, цветной, с цифорками.

А можно такой тупой вопрос: А на фига он нужен цветной? smile

Автор: Staruha 30.11.2004, 21:15
Окно с плавным переходом цвета(с верху вниз) :
Этот способ намного эффективнеe - заливается быстрее. Цвет – синий. Код:

Код

Private Sub Form_load()
   AutoRedraw = False
End Sub

   Private Sub Form_Paint() ' Объявление переменных
 Dim lY As Long
 Dim lScaleHeight As Long
 Dim lScaleWidth As Long

       ScaleMode = vbPixels 'Единицу измерения устанавливаем равной   пикселу
      lScaleHeight = ScaleHeight 'Получаем кол-во пикселов по высоте
      lScaleWidth = ScaleWidth 'Получаем кол-во пикселов по ширине
      DrawStyle = vbInvisible 'Устанавливаем стиль заливки и рисования
      FillStyle = vbFSSolid
      For lY = 0 To lScaleHeight 'Запускаем цикл закраски 'Закрашиваем
 FillColor = RGB(0, 0, 255 - (lY * 255) \ lScaleHeight)
 Line (-1, lY - 1)-(lScaleWidth, lY + 1), , B
 Next lY
 End Sub
 

Добавлено @ 21:16
Код от Падре

Автор: ~FoX~ 1.12.2004, 13:00
Старуха
А он не говорил про градиентную заливку, он как я понял, хотел отделным кускам формы цвет менять.

Автор: Гость_Старуха 1.12.2004, 14:07
Плавный переход цвета. От темного к светлому.У него это здорово получается

Автор: cardinal 1.12.2004, 18:16
Старуха, ~FoX~ не об этом smile

Автор: Staruha 1.12.2004, 21:18
Я особо Интерфейсу внимание не уделяю.Главное что бы комп соображал. Но теперь придется копаться о чем это FoX.

Автор: ~FoX~ 2.12.2004, 11:01
Цитата(cardinal @ 30.11.2004, 21:00)
Рисует на форме треугольник паскаля, цветной, с цифорками. 

А можно такой тупой вопрос: А на фига он нужен цветной?

А прикольно это.
Сам посмотри. Там закономерности проявляются.
Точно не помню, по моему на http://arbuz.uz/ нашел, но могу и ошибаться.

Автор: Staruha 2.12.2004, 13:20
А он не говорил про градиентную заливку - это что заливка рисунком?

Автор: ~FoX~ 2.12.2004, 15:03
Градиентная - плавный переход цвета от более темного/светлого к более светлому/темному

Автор: Gannibal 4.12.2004, 10:12
ну конечно вам всем большое спасибо за примеры, я незнаыу почему вы тут ругаетесь просто хотел знат как форму покрасить ;) вот и всё какие способы есть все очень интерестные ;) особенно с Таймером когда употребляеш, своё казино можно сделать ;) всем огромное спасибо., если есть есчё примерчики пишите smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)