Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Canvas ohne Rahmen


jackle32 - Fr 30.11.07 00:39
Titel: Canvas ohne Rahmen
Hallo,

ich benutze ein Canvas in einem Image, hab das jetzt so geschrieben,dass das Canvas nach und nach verschwindet und das Image darunter zu sehen ist. Das ganze ist ein runde Logo und daher benutze ich die Funktion "Pie" die direkt im Canvas enthalten ist. Das funktioniert auch schon super aber jetzt hab ich das Problem, dass ich zwar den eigentlichen "Kuchen" mit der Hintergrundfarbe füllen kann, ich aber trotzdem noch eine schwarze Linie außen rum hab. Das es so aussehen soll, dass das Image "einfach so erscheint" wäre es gut wenn man keine Begrenzunglinie sehen würde.
Daher meine Frage ob man da auch die Farbe ändern kann oder die Linine nicht mitzeichnen muss.
Hab dabei leider keine passende Stelle zum Umstellen gefunden. Hoffe von euch kann mir jemand helfen

Gruß Jack


Lannes - Fr 30.11.07 00:42

Hallo,

versuch es mal mit Canvas.Pen.Color :wink:


PeterPain - Fr 30.11.07 01:02

user profile iconLannes hat folgendes geschrieben:
Hallo,

versuch es mal mit Canvas.Pen.Color :wink:



bzw Canvas.Pen.Style := psClear; ;)


gruss


Lannes - Fr 30.11.07 01:08

Hallo,

ich hab auch noch was:
Canvas.Pen.Mode :wink:


jackle32 - Fr 30.11.07 09:51

Danke schon mal für die Antworten! Hat aber alles drei nichts genutzt. Ich weiß nicht wie ich es jetzt sagen soll aber es ist so wie es aussieht gar keine richtige Linie, zumindest sieht sie sehr komisch aus. Hab mal einen Screenshot davon gemacht vielleicht hat das Problem ja schon mal jemand gehabt.

Gruß Jack


Lannes - Fr 30.11.07 15:27

Hallo,

aus dem Bild allein kann man schwer erkennen was in Deinem Code geändert werden muss, damit der Rand nicht gezeichnet wird.

Etwas Code von Dir wäre hilfreich. :wink:


jackle32 - Fr 30.11.07 16:02

Hi,

ich glaube nicht, dass ein Fehler im Code liegt. Scheint ehr sowas wie irgendwo eine Defaulteinstellung zu sein.

Hier aber mal mein anzeige Programm

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:
procedure TForm1.Anzeige(Bild: TImage; Teilung: integer; var Teil: integer);
var
  breite, hoehe,x,y: integer;
begin
  Bild.Canvas.Brush.Color := clbtnface;
  bild.Canvas.FillRect(Bild.Canvas.ClipRect);

  //bild.Canvas.Pen.Mode := pmCopy;
  //bild.Canvas.Pen.Style := psSolid;
  //bild.Canvas.Pen.Color := clred;

  bild.Picture := Urbild.Picture;
  hoehe := Bild.Picture.Height;
  breite := Bild.Picture.Width;

  self.Text(Teil/Teilung);

  if (Teil < Teilung) then
  begin
    self.Koordinaten(Teilung, Teil, x, y);
    Bild.Canvas.Pie(0,0, breite,hoehe, (breite div 2),0,(breite div 2)+x,y+(hoehe div 2));
  end
  else
    Teil := 0;
end;


Die verschiedenen Einstellungen für den Pen haben auch nix geholfen, kann da die Farben und Styles beliebig verändern und die Ausgabe bleibt immer die gleiche.

Gruß Jack


jackle32 - Fr 30.11.07 16:18

Hab jetzt in der Wiederherstellung des Bildes was geändert und auf einmal ging die Zuweisung der Styles und Farben

Find ich tierisch komisch ... :gruebel: :nixweiss:

Danke trotzdem für die Mühen

Gruß Jack


Biergeneral - Do 06.12.07 01:02

Ich kann dir sagen warum da ein Rahmen drum gemalt wird ;)

Bei Canvas.FillRect wird lediglich der Brush für die Zeichnung verwendet.

Nimmst du hingegen Canvas.Rectangle hast du eine Kombination aus Stift und Pinsel.
Der Stift ist dann verantwortlich für den Rahmen(Pen.Color, Pen.Mode, Pen.Style) und der Pinsel für die Füllung(Brush.Color, Brush.Style)

Wolltest du also ein Bild ohne Rahmen, wär das einfach


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Brush.Color := clBtnFace;
Brush.Style := bsSolid;
Pen.Color := Brush.Color;
Pen.Style := pmCopy;

Canvas.Rectangle(Canvas.ClipRect);