Lav et tegneprogram

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.

Fold kodeboks ind/udKode 


7. Gå til Pictureboxens MouseDown-procedure, og indtast følgende kode.

Fold kodeboks ind/udKode 


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.

Fold kodeboks ind/udKode 




12. Nu skal vi have indsat en kode så tegnebredden bliver ændret.
Gå til Comboboxens Click-procedure, og indtast følgende kode.

Fold kodeboks ind/udKode 


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.

Fold kodeboks ind/udKode 


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.

Fold kodeboks ind/udKode 


Ændre derefter picDraw's MouseMove-procedure til dette.

Fold kodeboks ind/udKode 


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:
Fold kodeboks ind/udKode 


Å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

Fold kodeboks ind/udKode 


GEM SOM:
Fold kodeboks ind/udKode 


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.

Fold kodeboks ind/udKode 


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)

User
Bruger #2165 @ 13.09.03 22:24
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...
User
Bruger #1620 @ 26.09.03 15:51
Kan man ikke få den som Exe jeg spørger måske lidt dumt men fatter kein af VB
User
Bruger #1927 @ 28.09.03 10:35
Hej Kenneth.

Jo du kan. Hvis du har en e-mail adresse.
User
Bruger #4312 @ 12.11.03 11:26
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.
User
Bruger #4772 @ 25.11.03 23:54
Jeg kunne også godt tænke mig at vide hvor sætter man text-egenskaben til 1, og jeg har også engelskeversion af VB.
User
Bruger #4767 @ 26.11.03 11:56
Fint programeks! - Fungerer bare ikke i egen programmering! - (.BackColor)
User
Bruger #1927 @ 26.11.03 16:32
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.
User
Bruger #4772 @ 28.11.03 18:59
ok mange tak
User
Bruger #4854 @ 07.12.03 21:03
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
User
Bruger #1927 @ 20.12.03 11:43
Hmm...Kunne du udtrykke dig lidt mere?
User
Bruger #4862 @ 04.01.04 20:54
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?
User
Bruger #4862 @ 26.01.04 16:17
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 !
User
Bruger #5157 @ 27.01.04 22:05
ved godt jeg virkelig er en noobie til det her men alle har jo en start ;).. øhm hvor sætter man en Picturebox ind? :S
User
Bruger #1927 @ 02.02.04 16:08
Til ANDI og EBBE!!!

Andi: Prøv 3DState.com

Ebbe: Toolboxen til venstre i VB. Den lige ved siden af musepilen.
User
Bruger #5108 @ 16.02.04 11:44
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 :D
User
Bruger #1927 @ 14.03.04 16:44
Hvilken del af koden?
User
Bruger #882 @ 18.05.04 13:44
Der er en fejl.. Når man åbner et andet vindue, forsvinder billedet i selve tegneprogrammet..
Har i været ude for det ??
User
Bruger #882 @ 18.05.04 14:16
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
User
Bruger #4862 @ 18.05.04 17:10
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).
User
Bruger #4862 @ 18.05.04 19:15
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).
User
Bruger #1927 @ 17.04.05 11:55
Hej Andi.

Jeg er igang med at lave et andet tegneprogram hvor man kan fortryde én gang! :D
User
Bruger #7720 @ 24.08.05 19:26
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
User
Bruger #1927 @ 19.10.05 15:03
Hej Lasse.

Hvis du stadig har "dit" tegneprogram liggende, kan du så ikke sende det så jeg lige kan kigge lidt på dit problem?
User
Bruger #10237 @ 18.02.07 16:41
<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
User
Bruger #10237 @ 18.02.07 16:42
Pis det der <qoute> virked ikke .. det kunne ellers have set tjeket ud :P
User
Bruger #1927 @ 31.05.07 18:13
LOL! :P
User
Bruger #11767 @ 01.07.07 20:11
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 :D

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
User
Bruger #1927 @ 14.10.07 13:46
Hvilken linje refererer den til?
User
Bruger #10895 @ 07.04.08 19:50
Nice lavet en hvordan laver man en kode til en hel lige linje ?
User
Bruger #1927 @ 13.05.08 22:17
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.
t