Autor Beitrag
navarro2010
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25
Erhaltene Danke: 1



BeitragVerfasst: Do 10.03.11 17:23 
Kann mir bitte jemand helfen, den Quelltext zu verbessern und die Anweisungen (Kommentare) zu befolgen

ausblenden volle Höhe Delphi-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:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Image1: TImage;
    ColorDialog1: TColorDialog;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Panel1: TPanel;
    OpenButton: TSpeedButton;
    SaveButton: TSpeedButton;
    NewButton: TSpeedButton;
    ComboBox2: TComboBox;
    ComboBox1: TComboBox;
    PenButton: TSpeedButton;
    LineButton: TSpeedButton;
    RectButton: TSpeedButton;
    CircleButton: TSpeedButton;
    EllipseButton: TSpeedButton;
    PenColorButton: TSpeedButton;
    BrushColorButton: TSpeedButton;
    xButton: TSpeedButton;
    yButton: TSpeedButton;
    ExitButton: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure PenButtonClick(Sender: TObject);
    procedure LineButtonClick(Sender: TObject);
    procedure RectButtonClick(Sender: TObject);
    procedure CircleButtonClick(Sender: TObject);
    procedure EllipseButtonClick(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure PenColorButtonClick(Sender: TObject);
    procedure BrushColorButtonClick(Sender: TObject);
    procedure OpenButtonClick(Sender: TObject);
    procedure SaveButtonClick(Sender: TObject);
    procedure NewButtonClick(Sender: TObject);
    procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure ComboBox2DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var Grafikart:   Integer;
    Stiftart:    TPenStyle;
    Pinselart:   TBrushStyle;
    Zeichnen:    Boolean;
    Stiftfarbe, Pinselfarbe: TColor;
    x0,y0,x1,y1: LongInt;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Grafikart:=1;
  Stiftfarbe:=clblack;       //schwarz
  Pinselfarbe:=clblack;      //schwarz
  Stiftart:=pssolid;         //undurchsichtig
  Pinselart:=bsclear;        //durchsichtig
  Image1.Canvas.Pen.Color:=Stiftfarbe;
end;

procedure TForm1.PenButtonClick(Sender: TObject);   //Zeichenwerkzeuge 1-5
begin
  Grafikart:=1;
end;

procedure TForm1.LineButtonClick(Sender: TObject);
begin
  Grafikart:=2;
end;

procedure TForm1.RectButtonClick(Sender: TObject);
begin
  Grafikart:=3;
end;

procedure TForm1.CircleButtonClick(Sender: TObject);
begin
  Grafikart:=4;
end;

procedure TForm1.EllipseButtonClick(Sender: TObject);
begin
  Grafikart:=5;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Zeichnen:=True;                      //jetzt wird gezeichnet
  x0:=X; y0:=Y;                        //Startpunkt
  x1:=X; y1:=Y;                        //Endpunkt - wird geändert bei Bewegung
  with Image1.Canvas do
    begin
      Pen.Color:=Stiftfarbe;
      Pen.Style:=Stiftart;
      Brush.Color:=Pinselfarbe;
      Brush.Style:=Pinselart;
      MoveTo(X,Y);
      if Grafikart=1 then
        Pen.Mode:=pmCopy               //pmCopy - Stiftfarbe von Color
      else
        Pen.Mode:=pmNotXor;            // pmNotXor - Umkehren bzw löschen
    end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Zeichnen then
    with Image1.Canvas do
      begin
        Case Grafikart of
          1: Image1.Canvas.LineTo(X,Y);  // hier zeichnen wir eine Linie zu X und Y, die in der Prozedur enthalten sind
          2begin
               //hier musst du etwas sinnvolles einfügen, wie auch bei 3,4,5
             end;
          3:
          4:
          5:
        end;
        x1:=x;       //hier wird nach jeder Mausbewegung die X-Position der Maus gespeichert
        y1:=y;       //hier die Y-Position -> zusammen mit pmNotXor kann damit ein löschen des
      end;           //letzten Zeichenschrittes bewirkt werden.
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Zeichnen:=False;
  with Image1.Canvas do
    begin
      Pen.Mode:=pmCopy;    //pmCopy heißt, dass jetzt die Stiftfarbe aus dem DIalog verwendet wird
      Case grafikart of
        2//wie schon oben, musst du jetzt die richtigen Befehle zum Zeichnen geben.
        3:
        4:
        5:
      end;
    end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   Stiftart:=TPenStyle(ComboBox1.ItemIndex);       //Kurzform Stiftauswahl
end;

procedure TForm1.ComboBox2Change(Sender: TObject);     //Pinselauswahl
begin
  Pinselart:= // analog zu ComboBox1Change, diesmal für den Pinsel
end;

procedure TForm1.PenColorButtonClick(Sender: TObject);  //Stiftfarbe
begin
  if ColorDialog1.Execute then
    Stiftfarbe:=ColorDialog1.Color;
end;

procedure TForm1.BrushColorButtonClick(Sender: TObject);  //Pinselfarbe
begin
  //analog zu PenColorButtonClick, nur für den Pinsel
end;

procedure TForm1.OpenButtonClick(Sender: TObject);      //öffnen
begin
  //auch hier wird ein Dialog geöffnet. danach folgt der Befehl zum einfügen
  //in Image1, also Image1.[selbst suchen]
end;

procedure TForm1.SaveButtonClick(Sender: TObject);       //speichern
begin
  //analog zu OpenButtonClick
end;

procedure TForm1.NewButtonClick(Sender: TObject);       //neues Bild also
begin                                                   //weiß überschreiben
  // wie schon geübt, soll hier einfach das vorhandene Bild komplett übermalt werden
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  {with ComboBox1.Canvas do                  //Zeichnung statt Text in ComboBox
    begin
      Pen.Color:=clBlack;
      Pen.Style:=TPenStyle(Index);
      Brush.Color:=clWhite;
      FillRect(Rect);
      MoveTo(Rect.Left+5,Rect.Top+ComboBox1.ItemHeight div 2);
      LineTo(Rect.Right-5,Rect.Top+ComboBox1.ItemHeight div 2);
    end; }

end;

procedure TForm1.ComboBox2DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  {with ComboBox2.Canvas do                //Zeichnung statt Text in ComboBox
    begin
      Pen.Color:=clBlack;
      Pen.Style:=psSolid;
      Brush.Color:=clBlack;
      Brush.Style:=TBrushStyle(Index);
      Rectangle(Rect.Left+1,Rect.Top+1,Rect.Right-1,Rect.Bottom-1);
    end; }

end;

end.



Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 10.03.2011 um 18:15
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 10.03.11 17:38 
Wie sollen wir dir helfen, wenn du keine konkreten Fragen stellst? :nixweiss:
Wir können ja nicht wissen was dein Problem ist.

Wenn du meintest, ob dir jemand die Hausaufgaben machen kann: Ja, aber dann stell das Angebot bitte in die Jobbörse, am besten gleich mit Preisvorstellung...

Wenn du es selbst mit Hilfe machen willst, schreib bitte genau wo du nicht weiterkommst und was du da versucht hast.