Einzelnen Beitrag anzeigen

DrDangerous

Registriert seit: 5. Okt 2002
17 Beiträge
 
#5
  Alt 30. Okt 2002, 09:50
Hallo Sam,

wie Christrian schon sagte, Linienbreiten unterhalb 1 Pixel wirst Du nicht schaffen können. Du kannst allenfalls die Farbe der Linien anpassen, so dass sie rein optisch weniger ins Gewicht fallen; zum Beispiels durch Verwendung eines Grautones.

Ich habe mal mit folgendem Code ein Raster auf ein Bild gemalt. Vielleicht kannst Du anhand dieses Beispiels erklären, was daran jetzt noch zu dick ist.
(Es geht mir im Moment weniger um die nicht vorhandene Eleganz dieses Codes... also bitte nicht meckern..)

Code:
[b]procedure[/b] TForm1.btn_DrawGridClick(Sender: TObject);
[b]const[/b] GridSize : Integer = 20;
[b]var[/b] xSteps, ySteps, xIndex, yIndex : Integer;
[b]begin[/b]
  [b]If not[/b] Image1.Picture.Bitmap.Empty [b]Then[/b]
    [b]With[/b] Image1.Picture.Bitmap [b]Do[/b]
    [b]Begin[/b]
      xSteps:= Width [b]div[/b] GridSize;
      ySteps:= Height [b]div[/b] GridSize;

      [b]With[/b] Canvas [b]Do[/b]
      [b]Begin[/b]

        Pen.Width:= 1;
        Pen.Color:= clSilver;
        Pen.Style:= psSolid;

        [b]For[/b] xIndex:= 0 [b]To[/b] xSteps [b]Do[/b]
          [b]For[/b] yIndex:= 0 [b]To[/b] ySteps [b]Do[/b]
          [b]Begin[/b]
            MoveTo( 0, yIndex*GridSize ); LineTo( Width, yIndex*GridSize );
            MoveTo( xIndex*GridSize, 0 ); LineTo( xIndex*GridSize, Height );
          [b]End;[/b]
      [b]End;[/b]
    [b]End[/b]
  [b]Else[/b]
    ShowMessage( 'Kein Bild verfügbar.' );
[b]end;[/b]
Das von diesem Code produzierte Bild siehst Du im Anhang. Wenn man dieses jetzt mitsamt des Gitters vergrößert, so werden die Linien natürlich ebenfalls größer (breiter). Als Abhilfe könntest Du jeweils das Original skalieren und erst danach das Gitter zeichnen. Die Operation geht recht schnell und Du bist wieder bei Linienbreiten von genau 1 Pixel.
Miniaturansicht angehängter Grafiken
253_1035971415.gif  
  Mit Zitat antworten Zitat