Dessiner une grille de points [Résolu]

cs_jakonil 10 Messages postés jeudi 30 octobre 2003Date d'inscription 28 mars 2010 Dernière intervention - 27 mars 2010 à 00:32 - Dernière réponse : cs_jakonil 10 Messages postés jeudi 30 octobre 2003Date d'inscription 28 mars 2010 Dernière intervention
- 28 mars 2010 à 00:16
Bonjour,
j'ai besoin d'afficher une surface avec une grille de points tous équidistants en x et en y. J'ai employé la propriété pixels de canvas mais l'affichage est très lent.
Connaissez-vous un meilleur méthode ?

Merci.

JAKONIL[b]
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 27 mars 2010 à 04:24
3
Merci
Salut,
essaye ScanLine (tu peux aller voir "ScanLine Delphi" sur google, chercher les sources en rapport avec ScanLine sur le site - il y en a une bonne poignée - ou encore jeter un oeil à mon tutorial ici).

Cordialement, Bacterius !

Merci Bacterius 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Bacterius
Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 27 mars 2010 à 16:22
3
Merci
procedure DrawDotGrid(aCanvas:TCanvas; aWidth, aHeight, aPosX, aPosY, aDotX, aDotY, aDotSize, aDotColor, aBackColor: integer);
var
  DotBrush : TBitmap;
  BackBuf  : TBitmap;
begin
  BackBuf := TBitmap.Create;
  try
    BackBuf.Width := aWidth;
    BackBuf.Height:= aHeight;
    BackBuf.PixelFormat := pf32bit;

    DotBrush := TBitmap.Create;
    try
      DotBrush.Width := aDotX+1;
      DotBrush.Height:= aDotY+1;
      DotBrush.PixelFormat := pf32bit;

      DotBrush.Canvas.Brush.Color := aBackColor;
      DotBrush.Canvas.FillRect(DotBrush.Canvas.ClipRect);
      if aDotSize = 1 then
        DotBrush.Canvas.Pixels[aDotX, aDotY] := aDotColor
      else
      begin
        DotBrush.Canvas.Brush.Color := aDotColor;
        DotBrush.Canvas.Pen.Color   := aBackColor;
        DotBrush.Canvas.Rectangle(aDotX-aDotSize-1, aDotY-aDotSize-1, aDotX+1, aDotY+1);
      end;

      BackBuf.Canvas.Brush.Bitmap := DotBrush;
      BackBuf.Canvas.FillRect(BackBuf.Canvas.ClipRect);

      aCanvas.Draw(aPosX, aPosY, BackBuf);
    finally
      DotBrush.Free;
    end;
  finally
    BackBuf.Free;
  end;
end;


procedure TForm32.PaintBox1Paint(Sender: TObject);
begin
  DrawDotGrid(PaintBox1.Canvas,
              PaintBox1.Width-10, PaintBox1.Height-10, 5, 5,
              PaintBox1.Width div 10, PaintBox1.Height div 10,
              2, clRed, clWhite);
end;

Merci f0xi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de f0xi
cs_jakonil 10 Messages postés jeudi 30 octobre 2003Date d'inscription 28 mars 2010 Dernière intervention - 27 mars 2010 à 12:48
0
Merci
Bonjour,

merci, je vais voir.


JAKONIL[b]
Commenter la réponse de cs_jakonil
cs_jakonil 10 Messages postés jeudi 30 octobre 2003Date d'inscription 28 mars 2010 Dernière intervention - 28 mars 2010 à 00:16
0
Merci
Merci pour vos réponses et propositions à vous, f0xi et bacterius, je teste les 2 solutions puis je fais mon choix.

Voilà un forum qui marche.



JAKONIL[b]
Commenter la réponse de cs_jakonil

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.