Autor Beitrag
Jojo1989
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 11.02.08 14:19 
Hey leute,

Muss in der Schule ein Projekt erarbeiten, primär geht es dabei nicht um die Programmierung des Programmes, vielmehr um die Steuerung (will ich aber hier nicht näher drauf eingehen). Da ich nicht so der grosse Programmierer bin, hab ich mir gedacht ich wende mich gleich an die Spezialisten.

Das Programm:

Es handelt sich um ein virtuelles Graffiti Programm. GUI alles erstellt. Jetzt möchte ich auf ein Panel zeichnen das über verschiedene "Texturen" wie Mauern oder Holz gelegt ist. Ich sollte zwischen verschiedenen Stifte wählen können (Spray, Stift) sowie die Dicke und Farbe ändern.

Hab was gelesen von wegen mit GraphicsPath/Graphics.DrawPath/Graphics.FillPath und passenden Pen/Brush-Objekten. Aber ich kenn mich da eben nicht aus.

Wie realisiere ich nun dies, und hat jemand vielleicht ein konkretes Beispiel?

Sprache: Visual C Sharp 2005

mfg jojo
Jojo1989 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 12.02.08 11:55 
Habs jetzt so gelöst (Bin erfreut für Verbesserungen):

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace Malen
{
partial class MainForm : System.Windows.Forms.Form 

    
    
        //Deklariert einen Graphics Path der Maus folgend
    System.Drawing.Drawing2D.GraphicsPath mousePath = new System.Drawing.Drawing2D.GraphicsPath(); 
    
    
        //Alphawert 
    int myAlpha = 100
        //Farbe 
    Color myUserColor = new Color(); 
        //Stiftgrösse 
    float myPenWidth = 30
    
    //************************************************************** 
    
    
    
    #region " Windows Form Designer " 
    
    public MainForm() : base() 
    { 
        
        InitializeComponent(); 
        
        
        
    }   
    #endregion 
    
    private void PictureBox1_MouseDown(object sender, MouseEventArgs e) 
    { 
        
        if (e.Button == MouseButtons.Left) { 
          
            
            mousePath.StartFigure(); 
            
        } 
        
    } 
    
    private void PictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) 
    { 
        
        if (e.Button == MouseButtons.Left) { 
         
            
            try { 
                mousePath.AddLine(e.X, e.Y, e.X, e.Y); 
           
            } 
            
            catch { 
                
            } 
            
        } 
        
        PictureBox1.Invalidate(); 
        //Refresh 
        
    } 
    
    
    
    private void PictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
    { 
        
        
        try { 
            
            
            myUserColor = (System.Drawing.Color.Green); 
            //Farbauswahl 
            
            myAlpha = 180
            // Alphawert (von 0-255) 
            
            Pen CurrentPen = new Pen(Color.FromArgb(myAlpha, myUserColor), myPenWidth); 
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 
            e.Graphics.DrawPath(CurrentPen, mousePath); 
        } 
        
        catch { 
            
        } 
        
    }
    

}
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 12.02.08 15:01 
Hallo Jojo1989,
Mache uns doch bitte die Arbeit nicht noch schwerer und unterlasse in Zukunft das Crossposten in verschiedenen Foren - so steht es auch in den Regeln jenes anderen Forums.



user profile iconJojo1989 hat folgendes geschrieben:
Bin erfreut für Verbesserungen
So ein leerer Catch-Block ist eigentlich immer unsauber, fange entweder eine bestimmte, erwartete Exception auf oder lasse sie besser gar nicht entstehen (AddLine wirft ja z.B. überhaupt keine Exception). Außerdem solltest du den Pen nur einmal erstellen und dann speichern, sobald das zum Performance-Problem wird.