Autor Beitrag
Ritzeratze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Do 20.11.14 00:01 
Moin,

das Thema wurde zwar schon einmal behandelt, brauche aber nur einen Tipp um selbst an Ziel zu kommen. in den jeweiligen Dialogen lege ich entweder die Rahmenfarbe oder die Spielfeldfarbe fest.
Nach Schliessen des Colordialogfeldes werden die jeweiligen Farben in ein Panel gezeichnet. Hier ist aber mein Problem, da ich jeweils ein Panel.Refresh mache und dabei die Rahmenfarbe bzw die Spielfeldfarbe wieder überschreibe. Der Anwender soll aber Rahmenfarbe und Spielfeldfarbe gleichzeitig im Panel angezeigt bekommen.

Kann mir jemand ein Tipp geben wie ich das realisieren kann ?
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:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Pong
{
  public partial class EinstellungenDialog : Form
  {
    
    Color RahmenFarbe;
    Color SpielfeldFarbe;
   
    public EinstellungenDialog()
    {
      InitializeComponent();
    }

    public Point LiefereWert()
    {
      Point rueckgabe = new Point(00);
      if (radioButton1.Checked == true)
        rueckgabe = new Point(320200);
      if (radioButton2.Checked == true)
        rueckgabe = new Point(640480);
      if (radioButton3.Checked == true)
        rueckgabe = new Point(1024768);
      if (radioButton4.Checked == true)
        rueckgabe = new Point(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
      return rueckgabe;
    }

 
   //Methode zum auswählen der Rahmenfarbe
    private void btnFarbeRahmen_Click(object sender, EventArgs e)
    {
      ColorDialog RahmenColor = new ColorDialog();
      if (RahmenColor.ShowDialog() == DialogResult.OK)
        RahmenFarbe = RahmenColor.Color;
        panelVorschau.Refresh();
    }

    //Methode zum auswählen der Spielfeldfarbe
    private void btnFarbeSpielfeld_Click(object sender, EventArgs e)
    {
      ColorDialog SpielfeldColor = new ColorDialog();
        if (SpielfeldColor.ShowDialog() == DialogResult.OK)
        SpielfeldFarbe = SpielfeldColor.Color;
        panelVorschau.Refresh();
    }

    public Color LiefereSpielfeldfarbe()
    {
      return SpielfeldFarbe;
    }

    public Color LiefereRahmenfarbe()
    {
      return RahmenFarbe;
    }

    private void btn_abbrechen_Click(object sender, EventArgs e)
    {
      Close();
    }

    //zeichnet die Grafik ins Panel
    private void panelVorschau_Paint_1(object sender, PaintEventArgs e)
    {
      Graphics g = panelVorschau.CreateGraphics();
      Pen p = new Pen(RahmenFarbe, 8);
      SolidBrush sb = new SolidBrush(SpielfeldFarbe);
      
      g.DrawRectangle(p, 00426,100);
      g.DrawRectangle(p, 15,30150);
      g.DrawRectangle(p, 100,25,1,1);

      g.FillRectangle(sb, 0,0,426,100);  
      
    }


Danke und Gruß Ritze

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Do 20.11.14 00:56 
Abend,

tausche mal ganz unten im Code das
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
      g.DrawRectangle(p, 00426,100);
      g.DrawRectangle(p, 15,30150);
      g.DrawRectangle(p, 100,25,1,1);

      g.FillRectangle(sb, 0,0,426,100);

mit dem hier:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
      g.FillRectangle(sb, 0,0,426,100);  

      g.DrawRectangle(p, 00426,100);
      g.DrawRectangle(p, 15,30150);
      g.DrawRectangle(p, 100,25,1,1);

Du zeichnest zwar den Rahmen, aber tust ihn sofort darauf wieder überzeichnen mit der FillRectangle Methode. Fülle zuerst den Hintergrung und dann den Rahmen, dann sollte es gehen.

PS: bei boolschen Vergleichen kannst du das == true weglassen.
Aus
ausblenden C#-Quelltext
1:
 if (radioButton1.Checked == true)					

kannst du einfach
ausblenden C#-Quelltext
1:
 if (radioButton1.Checked)					

machen.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Do 20.11.14 01:02 
Moin C#,

wie einfach war das denn ? Und ich grübel rum, wie ich das anders bauen kann ..

Ganz dickes Danke

RITZE