Site hosted by Angelfire.com: Build your free website today!

Learn Visual Basic Graphics Programming

peaceprint.exe The compiled program for IBM type computers. Save this to disk and then open. This is what the user gets...
peaceprint.vbp The Project... right click and save target as... Then open in a Visual Basic Studio. This has all the code so a programmer can modify the program to make it do something completely different...
peaceprint.frm The Form... right click and save target as... This is needed also. The Project calls this form... peaceprint.frx a .frx file... I don't know what this is but I included it here anyway...
Yes, you need to get a compiler from Microsoft to write programs in Visual Basic... Go give Bill Gates more money... Years ago a compiler called Qbasic was included for FREE in every copy of Windows 3.1 ... Sadly, Microsoft made a NEW AND IMPROVED operating system called Windows 95 that forced programmers to purchase a separate compiler.
A screenshot of what the program looks like... There is a pictureBox called picOutput and a couple of command buttons... cmdKali (the "Make drawing" button) and cmdQuit... A checkBox called chkPrinter... A textbox called txtRepeat... and a form called frmPeaceprint

click here to download the executable program

The computer code... any line of text that starts with an apostrophe is a comment and is ignored by the computer... It is for people to read... It explains what the computer commands do...
There is a lot of REALLY annoying code at the beginning of the program that defines all the properties of the form... The VB studio wrote this part... Scroll down to see the part that I wrote... It is slightly less annoying...This is a listing of the entire file called peaceprint.frm...
VERSION 5.00
Begin VB.Form frmPeaceprint 
   BackColor       =   &H00008000&
   Caption         =   "peace sign art designer. Makes a new drawing with every click."
   ClientHeight    =   6705
   ClientLeft      =   60
   ClientTop       =   375
   ClientWidth     =   8850
   FillColor       =   &H00800000&
   BeginProperty Font 
      Name            =   "Arial Black"
      Size            =   12
      Charset         =   0
      Weight          =   400
      Underline       =   0   'False
      Italic          =   0   'False
      Strikethrough   =   0   'False
   EndProperty
   LinkTopic       =   "Form1"
   ScaleHeight     =   26440.1
   ScaleMode       =   0  'User
   ScaleWidth      =   8850
   StartUpPosition =   3  'Windows Default
   Begin VB.CheckBox chkPrinter 
      Caption         =   "turn on printer"
      BeginProperty Font 
         Name            =   "Arial Black"
         Size            =   8.25
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   465
      Left            =   6360
      TabIndex        =   5
      Top             =   3240
      Width           =   2175
   End
   Begin VB.TextBox txtRepeat 
      Height          =   465
      Left            =   5640
      TabIndex        =   4
      Text            =   "12"
      Top             =   3240
      Width           =   495
   End
   Begin VB.CommandButton cmdKali 
      Caption         =   "Make drawing"
      BeginProperty Font 
         Name            =   "Arial Black"
         Size            =   9.75
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   5880
      TabIndex        =   2
      Top             =   960
      Width           =   2535
   End
   Begin VB.CommandButton cmdQuit 
      Caption         =   "QUIT"
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   12
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   375
      Left            =   6120
      TabIndex        =   1
      Top             =   6120
      Width           =   2175
   End
   Begin VB.PictureBox picOutput 
      AutoRedraw      =   -1  'True
      BackColor       =   &H00FFFFFF&
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =   12
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   6495
      Left            =   240
      ScaleHeight     =   6435
      ScaleWidth      =   5115
      TabIndex        =   0
      Top             =   120
      Width           =   5175
   End
   Begin VB.Label Label3 
      Alignment       =   2  'Center
      BackColor       =   &H00C0FFC0&
      Caption         =   "Push this button to see a new drawing."
      Height          =   735
      Left            =   5640
      TabIndex        =   7
      Top             =   120
      Width           =   3015
   End
   Begin VB.Label Label2 
      Alignment       =   2  'Center
      BackColor       =   &H00C0FFC0&
      Caption         =   $"peaceprint.frx":0000
      BeginProperty Font 
         Name            =   "Courier"
         Size            =   12
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   2175
      Left            =   5640
      TabIndex        =   6
      Top             =   3840
      Width           =   3015
   End
   Begin VB.Label Label1 
      Alignment       =   2  'Center
      BackColor       =   &H00C0FFC0&
      Caption         =   "Change this number to change the drawing. 1=few lines, 25= LOTS of lines... Changes COLORS TOO. Maximum number is 25."
      BeginProperty Font 
         Name            =   "Courier"
         Size            =   12
         Charset         =   0
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00400040&
      Height          =   1575
      Left            =   5640
      TabIndex        =   3
      Top             =   1560
      Width           =   3135
   End
End
Attribute VB_Name = "frmPeaceprint"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Visual Basic program that paints a
'PEACE SIGN on the screen... with optional printer...
'other Kaleidoscope programs can be found at:
'http://gregvan.tripod.com
'https://www.angelfire.com/art2/gregvan
'or just search google.com for "gregvan" I'm listed a lot...
'This project is called peaceprint.vbp
'this form is called peaceprint.frm
'fred1 and sue1 are used to store the random numbers
'so the printout will be identical to the monitor
'I put them outside of the cmdKali_Click so that they
'will not be reset to zero by clicking on the button START...
Dim sue1 As Integer
Dim fred1 As Integer
'*************************************
Private Sub cmdKali_Click()
'when you push the "Start Kaleidoscope" button
'this part of the program executes...
Dim krsna As Single
'KRSNA IS A "SINGLE" TYPE VARIABLE BECAUSE i WANT TO ADD FRACTIONS TO IT.
'like krsna=krsna+.6 (6/10th)
Dim fred As Integer, sue As Integer
'fred and sue are variables used for location of
'the endpoints of lines and to change the color also
' integers must be whole numbers like 4 or 72 with NO decimals
' 4.52 is a single and so is 23.123
Dim pete As Integer
'pete and petenum are used to control how many radiating lines are drawn
Dim peteNum As Integer
' c and cc are used to calculate colors
Dim c As Single 'these are used for HEXIDECIMAL NUMBERS
Dim cc As Single  ' like &hff2255 or &hdead00
Dim kc As Single 'the color of the big dot peace sign rests on
peteNum = Val(txtRepeat)
If peteNum < 1 Then peteNum = 12
If peteNum > 25 Then peteNum = 12
'get a number from the box on the screen
'and use it for a loop counter... default = 12

If chkPrinter.Value = 1 Then
'see if they have checked the "turn on printer" box
'we only want new random numbers when box is NOT checked
Else
    Randomize
'generate some random numbers
    sue = Int(Rnd * 400)
    sue = sue - 200
'sue can be from -200 to 200
    fred = Int(Rnd * 300)
    fred = fred - 150
'fred can be from -150 to 150
'store those numbers in sue1 and fred1
'so we can use them again if the printer checkbox is checked
'they control the color scheme...
    sue1 = sue
    fred1 = fred
End If
picOutput.Cls
'set the scale of the picture box 640 tall by 480 wide
' the lower left corner is 0,0
'the upper right corner is 480,640
picOutput.Scale (0, 640)-(480, 0)
If chkPrinter.Value = 1 Then
'get those random numbers we saved
'so we can use them to drive the printer
    sue = sue1
    fred = fred1
'set the printer scale... do this only when box is checked
'A MYSTERY HAPPENS WHEN I PRINT...
'THE PRINT IS BACKWARDS... THE LEFT HAND SIDE OF THE DRAWING PRINTS ON THE RIGHT !!!

    Printer.Scale (0, 640)-(480, 0)
End If

'initialize up-down counter factors for endpoints of lines
Dim suef As Integer 'suefactor
suef = -4
Dim fredf As Integer 'fredfactor
fredf = 6
'some loops to repeat the radial line plotting
For re = 1 To 8
'you can change the value of peteNum by typing into a textbox during execution...
For pete = 1 To peteNum
For joe = 1 To pete
'up-down counter for fred...it increases fred until a threshhold
'is reached then it decreases fred until another threshhold is
'reached then it increases fred... "a triangle wave oscillator"
fred = fred + fredf
If fred < -400 Then fredf = 6
If fred > 400 Then fredf = -3
sue = sue + suef
If sue > 350 Then suef = -4
If sue < -350 Then suef = 5
'do some math to change the color
c = c + &H10203
'make sure the color number is valid
'the largest number for a color is 16 million decimal &hffffff hex
'hex numbers use base 16 (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)
'color are represented by a six digit hex number
'&hffffff=white &h000000=black 2 digits each for red,green and blue
If c > &HFFFFFF Then c = c - &HFFFFFF

'calculate the endpoints of the lines
'We use x to represent horizontal distances
'increasing from left to right
'We use y to represent vertical distances
'increasing from bottom to top...Just like geometry class
x = fred + sue
y = sue - fred
'draw the lines that radiate from the center of the drawing
'these show on the screen...
'picOutput.line(endpointX,Y)-(otherendpointX,Y),COLOR
picOutput.Line (240 + x, 320 + y)-(240 - x, 320 - y), c
picOutput.Line (240 - x, 320 + y)-(240 + x, 320 - y), c
If chkPrinter.Value = 1 Then
'these are printed by the printer
    Printer.Line (240 + x, 320 + y)-(240 - x, 320 - y), c
    Printer.Line (240 - x, 320 + y)-(240 + x, 320 - y), c
End If

Next joe
Next pete
Next re
'draw a big spot for the peace sign to rest on
kc = &HFFFFFF - (peteNum * &H100203)
For krsna = 1 To 110 Step 0.1

picOutput.Circle (240, 320), krsna, kc
If chkPrinter.Value = 1 Then
    Printer.Circle (240, 320), krsna, kc
    End If

Next krsna
Dim d As Single
'draw the peace sign
'the format for a circle is...
'picOutput.Circle(centerX,centerY),diameter,color
'some colors have names... vbBlack, vbRed, vbBlue, vbYellow
For d = 1 To 20 Step 0.4 'a tiny step to make the peace symbol darker
picOutput.Circle (240, 320), 100 + d, vbBlack
picOutput.Line (230 + d, 200)-(230 + d, 440), vbBlack
picOutput.Line (240, 320 + d)-(150 - d, 245 + d), vbBlack
picOutput.Line (240, 320 + d)-(330 + d, 245 + d), vbBlack


If chkPrinter.Value = 1 Then
    Printer.Circle (240, 320), 100 + d, vbBlack
    Printer.Line (230 + d, 200)-(230 + d, 440), vbBlack

Printer.Line (240, 320 + d)-(150 - d, 245 + d), vbBlack
Printer.Line (240, 320 + d)-(330 + d, 245 + d), vbBlack

    End If
Next d
'make the color radically different than the radiating lines
'draw a border near the edge of the paper
cc = &HFFFFFF - c


For t = 0 To (400 - (peteNum * 15)) Step 2
cc = cc + &H30211
If cc > &HFFFFFF Then cc = cc - &HFFFFFF
picOutput.Line (300 - t, 0)-(0, 0 + t), cc
picOutput.Line (180 + t, 0)-(480, 0 + t), cc
picOutput.Line (300 - t, 640)-(0, 640 - t), cc
picOutput.Line (180 + t, 640)-(480, 640 - t), cc
If chkPrinter.Value = 1 Then
    Printer.Line (300 - t, 0)-(0, 0 + t), cc
    Printer.Line (180 + t, 0)-(480, 0 + t), cc
    Printer.Line (300 - t, 640)-(0, 640 - t), cc
    Printer.Line (180 + t, 640)-(480, 640 - t), cc
End If
Next t
Dim hal As Integer 'hal-the computer in 2001
'draw pyramids as part of the frame
For ha = 0 To (110 - (peteNum * 4)) Step 1
hal = ha + ha + ha + ha 'much humor here...
cc = cc + &H112233 'color changer
If cc > &HFFFFFF Then cc = cc - &HFFFFFF
'top and bottom pyramids
picOutput.Line (120 + hal, 0)-(240, ha), cc
picOutput.Line (360 - hal, 0)-(240, ha), cc
picOutput.Line (120 + hal, 640)-(240, 640 - ha), cc
picOutput.Line (360 - hal, 640)-(240, 640 - ha), cc
'side pyramids
picOutput.Line (0, 200 + hal)-(ha, 320), cc
picOutput.Line (0, 440 - hal)-(ha, 320), cc
picOutput.Line (480, 200 + hal)-(480 - ha, 320), cc
picOutput.Line (480, 440 - hal)-(480 - ha, 320), cc
If chkPrinter.Value = 1 Then
    'top and bottom pyramids
Printer.Line (120 + hal, 0)-(240, ha), cc
Printer.Line (360 - hal, 0)-(240, ha), cc
Printer.Line (120 + hal, 640)-(240, 640 - ha), cc
Printer.Line (360 - hal, 640)-(240, 640 - ha), cc
'side pyramids
Printer.Line (0, 200 + hal)-(ha, 320), cc
Printer.Line (0, 440 - hal)-(ha, 320), cc
Printer.Line (480, 200 + hal)-(480 - ha, 320), cc
Printer.Line (480, 440 - hal)-(480 - ha, 320), cc
End If
Next ha
End Sub
'*************************************************
'this part happens when you push the quit button...
Private Sub cmdQuit_Click()
Unload frmPeaceprint
End
End Sub




VERY FEW PEOPLE IN THE WORLD WILL SEE THIS PART OF THE PAGE... CONSIDER YOURSELF ONE OF THE LUCKY ONES... peaceprint1.exe A NEW AND IMPROVED program... with circles in the background... Watch this space for the latest stuff... peaceprint1.vbp peaceprint1.frm peaceprint1.frx