20
Tags:
visual-basic
Skrevet af
Bruger #1927
@ 18.08.2003
I denne artikel vil jeg vise hvordan man laver et tegneprogram.
1. Start et nyt projekt
2. Ændre form1's navn til frmMain
3. Tilføj en Picturebox(Picture1) til formen.
4. Ændre Pictureboxens navn til picDraw
5. Sæt Pictureboxens Appearance til 0-Flat
6. Gå til Pictureboxens MouseMove-procedure, og indtast følgende kode.
If Button = 1 Then 'Tjekker om venstre museknap er trykket ned.
picDraw.Line -(X, Y) 'Tegner en linje i pictureboxen.
End If
7. Gå til Pictureboxens MouseDown-procedure, og indtast følgende kode.
picDraw.CurrentX = X 'Sætter punktet hvor X begyder til den placering hvor musen er
picDraw.CurrentY = Y 'Gør det samme, bare med Y punktet
8. Start programmet. Nu kan du tegne i Pictureboksen, men kun når venstre museknap er trykket ned. Hvis du ændrer Button = 1 til Button = 2, så kan man kun tegne når højre museknap er trykket ned.
9. Tilbage til Design-time (Der hvor man redigerer programmet).
10. Nu vil vi gerne have at brugeren kan skifte tykkelsen på linjen.
Opret en Combobox til formen. Ændre dens navn til cboDrawWidth
og text-egenskaben til 1
11. Nu skal vi have indsat tegnebredderne.
Gå til Formens LOAD-procedure, og indtast følgende kode.
With cboDrawWidth
.AddItem "1" 'Indsætter en ny værdi i Comboboxen.
.AddItem "2" ' Det samme sker hele vejen ned.
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "13"
.AddItem "14"
.AddItem "15"
.AddItem "16"
.AddItem "17"
.AddItem "18"
.AddItem "19"
.AddItem "20"
End With
12. Nu skal vi have indsat en kode så tegnebredden bliver ændret.
Gå til Comboboxens Click-procedure, og indtast følgende kode.
picDraw.DrawWidth = cboDrawWidth.Text
13. Hvis du starter programmet og ændre tallet i comboboxen, så kan du tegne med en tykker linje.
14. Nu skal vi også lige have sådan at man kan ændre farven på linjen.
Opret en ny Picturebox. Ændre navnet til picCurColor
Opret endnu en Picturebox. Denne boks skal laves INDE i den forrige Picturebox.
Ændre navnet til picCurColor1.
Gør det samme med en til, men kald denne picCurColor2.
Sæt nu picCurColor1's TOP- og LEFT-egenskaber til 50.
Sæt picCurColor2's TOP- og LEFT-egenskaber til 240.
Sæt picCurColor's Height-egenskab til 550 og Width-egenskab til 570.
Både picCurColor1 og 2's Height- og Width-egenskab skal være 255.
Sæt picCurColor1's Backcolor-egenskab til Sort,
og picCurColor2's Backcolor-egenskab til Hvid.
16. Tag en kopi af picCurColor2, og placer den UDEN for picCurColor.
Nu markérer du den nye Picturebox og ændrer navnet til picColors. Derefter højreklikker du og vælger Copy. Derefter højreklikker du et andet sted på formen, højreklikker og vælger Paste. Nu trykker du JA til boksen som kommer op.
Gør dette til du har de antal bokse som du vil have. Hver boks svare til en farve.
Sæt hver boks, Backcolor-egenskab til noget forskelligt.
Nu hedder alle boksene som du indsatte det samme. Den eneste forskel er at indexen er forskellig.
Nu skulle du gerne have noget der ligner dette.
17. Nu skal vi have lavet sådan at når man klikker på en farve, så bliver linjen som der tegnes med den farve som man valgte.
Dobbeltklik på en af farverne. Ligemeget hvilken.
Indtast følgende kode i den valgte farves MouseDown-procedure.
If Button = 1 Then
picCurColor1.BackColor = picColors(Index).BackColor 'Sætter picCurColor1's Backcolor-egenskab til den samme farve som er valgt
Else
picCurColor2.BackColor = picColors(Index).BackColor 'Samme som før, bare med picCurColor2
End If
Start nu programmet og klik skiftevis på venstre og højre museknap på farverne.
Som du kan se bliver boksene picCurColor1 og picCurColor2's Backcolor-egenskab til den samme farve som der blev klikket på.
18. Nu skal vi have lavet sådan at når man tegner i Pictureboxen tegner man med den farve som der er valgt.
Gå til picDraw's MouseDown-procedure, og ændre koden til dette.
picDraw.CurrentX = X
picDraw.CurrentY = Y
If Button = 1 Then
picDraw.ForeColor = picCurColor1.BackColor 'Sætter picDraw's farve til farven som er valgt
Else
picDraw.ForeColor = picCurColor2.BackColor 'Gør det samme, bare når man højreklikker
End If
Ændre derefter picDraw's MouseMove-procedure til dette.
If Button = 1 Or Button = 2 Then 'Tegne en linje, både når venstre og højre museknap er trykke ned
picDraw.Line -(X, Y)
End If
19. Nu mangler vi bare Ny, Gem Som og Åbn funktionen.
Indsæt 4 knapper på formen.
Command1's Navn sættes til cmdNy og Caption til Ny
Command2's Navn sættes til cmdÅbn og Caption til Åbn
Command3's Navn sættes til cmdGem og Caption til Gem Som
Herunder kan du se koderne til de forskellige knapper's Click-procedure.
NY:
picdraw.Cls 'Sletter billedet i picDraw
ÅBN:
VIGTIGT: Højreklik på Toolbaren, Vælg Components, Markér Microsoft Common Dialog Control. Klik Anvend og OK.
Indsæt kontrollen på formen, og ændre dens navn til cmdDlg
cmdDlg.DialogTitle = "Åbn Billede" 'Titel på åbnboks
cmdDlg.Filter = "BMP Filer (*.bmp)|*.bmp|GIF Filer (*.gif)|*.gif|JPG Filer (*.jpg)|*.jpg|Alle Filer (*.*)|*.*|" 'Filtyper som skal kunne åbnes
cmdDlg.ShowOpen 'Vis åbnboks
picDraw.Picture = LoadPicture(cmdDlg.FileName) 'Indlæs billede til picDraw
GEM SOM:
cmdDlg.DialogTitle = "Gem Billede" 'Titel på åbnboks
cmdDlg.Filter = "BMP Filer (*.bmp)|*.bmp|GIF Filer (*.gif)|*.gif|JPG Filer (*.jpg)|*.jpg|Alle Filer (*.*)|*.*|" 'Filtyper som skal kunne gemmes
cmdDlg.ShowSave 'Vis gemboks
SavePicture picDraw.Picture, cmdDlg.FileName 'Gem billede fra picDraw
Håber at du kan bruge det til noget.
PS: Hvis du ønsker at brugeren skal kunne vælge ALLE farver, skal du gå ind i en af farverne's DblClick-procedure, og indtaste koden.
cmdDlg.ShowColor
picColors(Index).BackColor = cmdDlg.Color
PPS: Hvis du har nogle problemer, så kan du downloade
programmet:
http://udvikleren.dk/articlefiles/tegneartikel.zip
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (30)
Der var kun 1 ting jeg lærte:
picDraw.Line -(X, Y)
jeg plejer som regel at skrive:
picDraw.Line (picDraw.CurrentX,
picDraw.CurrentY)-(X, Y)
resultatet er det sammen, men man sparer kode...
Kan man ikke få den som Exe jeg spørger måske lidt dumt men fatter kein af VB
Hej Kenneth.
Jo du kan. Hvis du har en e-mail adresse.
Der står i nr 10:
Nu vil vi gerne have at brugeren kan skifte tykkelsen på linjen.
Opret en Combobox til formen. Ændre dens navn til cboDrawWidth
og text-egenskaben til 1
Hvor sætter man text-egenskaben til 1 ??? jeg har den engelskeversion af VB.
Jeg kunne også godt tænke mig at vide hvor sætter man text-egenskaben til 1, og jeg har også engelskeversion af VB.
Fint programeks! - Fungerer bare ikke i egen programmering! - (.BackColor)
Hej Morten og Mark.
Marker Comboboksen og gå ned i bunden af properties-vinduet. Der skulle der gerne være en kolonne hvor der står Text.
ok mange tak
når jeg laver det med at man kan skifte farve, får jeg følgende:
Private Sub picColors_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
picCurColor1.BackColor = picColors(Index).BackColor 'Sætter picCurColor1's Backcolor-egenskab til den samme farve som er valgt
Else
picCurColor2.BackColor = picColors(Index).BackColor 'Samme som før, bare med picCurColor2
End If
End Sub
Hvad skal jeg gøre med det?? Er ny med Vb så ved det ikke
Hmm...Kunne du udtrykke dig lidt mere?
Hey hvor får jeg fat på VB? jeg har kun Visual C++ ... mange tutes er i VB
mail mig andi@rosenhave.dk med info, etc en trial version et eller andet sted?
Sådan nu har jeg da fået VB
Vil meget gerne se artikler om at lave et spil i VB eller et GODT program...
ellers god artikel !
ved godt jeg virkelig er en noobie til det her men alle har jo en start
.. øhm hvor sætter man en Picturebox ind?
Til ANDI og EBBE!!!
Andi: Prøv 3DState.com
Ebbe: Toolboxen til venstre i VB. Den lige ved siden af musepilen.
En meget god artikel, jeg har vertfald fået noget ud af den... er også ved at sætte noget af dín kode ind i et "multi funktion" chat program som jeg har arbejdet på i omkring 2 måneder, så håber da at jeg kan få det til også at virke der
Hvilken del af koden?
Der er en fejl.. Når man åbner et andet vindue, forsvinder billedet i selve tegneprogrammet..
Har i været ude for det ??
picDraw.autoredraw
Så ordner den det..
Og så lige... SavePicture picDraw.image, cmdDlg.filename
Den skal bruges i stedet for SavePicture picDraw.picture, cmdDlg.filename
Ken
Kroell, hvordan bruder du den funktion?? (autoredraw) jeg mener hvor? og et sprøgsmål... er det muligt at lave en "undo" knap? eller "undo" short key (CTRL+Z).
Kroell, hvordan bruder du den funktion?? (autoredraw) jeg mener hvor? og et sprøgsmål... er det muligt at lave en "undo" knap? eller "undo" short key (CTRL+Z).
Hej Andi.
Jeg er igang med at lave et andet tegneprogram hvor man kan fortryde én gang!
Hej, øh det er første gang jeg prøver det her ! men der var kun en fejl, og det er til allersidst hvor jeg har tilføjet Gem Som knappen ! og når man så har skrevet det navn man vil have den skal hedde og trykker "gem" så popper den op med en box og siger : Rune-time error '380' ? hva er det galt ?!
Hilsen Lasse
Hej Lasse.
Hvis du stadig har "dit" tegneprogram liggende, kan du så ikke sende det så jeg lige kan kigge lidt på dit problem?
<quote>Der står i nr 10:
Nu vil vi gerne have at brugeren kan skifte tykkelsen på linjen.
Opret en Combobox til formen. Ændre dens navn til cboDrawWidth
og text-egenskaben til 1
Hvor sætter man text-egenskaben til 1 ??? jeg har den engelskeversion af VB. </quote>
Den hedder bare Text og den den standard værdi er combo1
Pis det der <qoute> virked ikke .. det kunne ellers have set tjeket ud
LOL!
Hej jeg har lavet det meste af programmet men når jeg når til 17
Private Sub picColors_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
picCurColor1.BackColor = picColors(Index).BackColor 'Sætter picCurColor1's Backcolor-egenskab til den samme farve som er valgt
Else
picCurColor2.BackColor = picColors(Index).BackColor 'Samme som før, bare med picCurColor2
End If
End Sub
den del
nå men når jeg når der til og får skrevet det der og åbner programmet så kan jeg stadig det med linie tykkelse men når jeg trykker på en af farverne så kommer denne fejlmeddelelse op
Compile error:
Method or data member not found
nogen der kan hjælpe?? plz
Hvilken linje refererer den til?
Nice lavet en hvordan laver man en kode til en hel lige linje ?
Mener du som når man holder Shift-tasten nede samtidig med at man tegner en streg i Paint?
Du skal være
logget ind for at skrive en kommentar.