Hallo Leute,
ich hoffe alle sind gesund?!
Ich habe folgendes Problem:
Ich möchte die Farbe von Shapes die ich mit GDI+ erstellt habe mit durch einen ColorDialog ändern.
Die Farbe ändert sich auch aber total falsch, es sieht so aus als würden die R, G, B -Werte total wild durcheinander gemixt!?
Ich hab ein kleines Beispielprg. erstellt bei dem der Code genauso stukturiert ist und das gleiche Problem auftritt. Ich hab versucht den Code so kurz zu halten wie es geht.
Das Projekt hab ich natürlich auch angehängt!
Code in der Form:
Code in der Klasse Shape:
Code in der Klasse Line:
Wäre super wenn Ihr mir helfen könntet!
Vielen Dank vorab für Eure Mühe!!!!
Duster
ich hoffe alle sind gesund?!
Ich habe folgendes Problem:
Ich möchte die Farbe von Shapes die ich mit GDI+ erstellt habe mit durch einen ColorDialog ändern.
Die Farbe ändert sich auch aber total falsch, es sieht so aus als würden die R, G, B -Werte total wild durcheinander gemixt!?
Ich hab ein kleines Beispielprg. erstellt bei dem der Code genauso stukturiert ist und das gleiche Problem auftritt. Ich hab versucht den Code so kurz zu halten wie es geht.
Das Projekt hab ich natürlich auch angehängt!
Code in der Form:
C#-Quellcode
- using System;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Windows.Forms;
- namespace ColorDialog_Problem
- {
- public partial class Form1 : Form
- {
- private bool _drawState = true;
- private string _shapeName = "Line";
- private Line _line = new();
- private Point _lineCoords;
- private int _alpha = 255;
- private int _red = 255;
- private int _green = 201;
- private int _blue = 14;
- public Form1()
- {
- InitializeComponent();
- }
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
- _drawState = true;
- _line.Draw(e.Graphics);
- }
- private void CmdStart_Click(object sender, EventArgs e)
- {
- if (DlgColor.ShowDialog() == DialogResult.OK)
- {
- _red = DlgColor.Color.R;
- _blue = DlgColor.Color.G;
- _green = DlgColor.Color.B;
- switch (_shapeName)
- {
- case "Line":
- _line = new Line(_alpha, _red, _green, _blue, 10, DashStyle.Dash)
- { LineLocation = _lineCoords, Size = new Size(200, 0) };
- break;
- default:
- break;
- }
- }
- Invalidate();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- InitializeShapes();
- }
- public void InitializeShapes()
- {
- _lineCoords = new Point(300, 200);
- _line = new Line(_alpha, _red, _green, _blue, 10, DashStyle.Dash)
- { LineLocation = _lineCoords, Size = new Size(200, 0) };
- }
- }
- }
Code in der Klasse Shape:
C#-Quellcode
- using System;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- namespace ColorDialog_Problem
- {
- public abstract class Shape
- {
- public Point LineLocation;
- public abstract string Name { get; set; }
- public int Alpha { get; set; }
- public int Width { get; set; }
- public DashStyle DStyle { get; set; }
- public Size Size { get; set; }
- public Pen Pen;
- public abstract void Draw(Graphics e);
- }
- }
Code in der Klasse Line:
C#-Quellcode
- using System.Drawing;
- using System.Drawing.Drawing2D;
- namespace ColorDialog_Problem
- {
- class Line : Shape
- {
- public override string Name
- {
- get => "Line";
- set { }
- }
- public Line() { }
- public Line(int alpha, int red, int green, int blue, int width, DashStyle dStyle)
- {
- Pen = new Pen(Color.FromArgb(alpha, red, green, blue), width)
- {
- DashStyle = dStyle
- };
- }
- public override void Draw(Graphics e)
- {
- e.DrawLine(Pen, LineLocation, LineLocation + Size);
- }
- }
- }
Wäre super wenn Ihr mir helfen könntet!
Vielen Dank vorab für Eure Mühe!!!!
Duster