Dessiner une grille de points [Résolu]

Messages postés
10
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2010
- - Dernière réponse : cs_jakonil
Messages postés
10
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2010
- 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 

4 réponses

Meilleure réponse
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Bacterius
Messages postés
4278
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
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;

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
10
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2010
0
Merci
Bonjour,

merci, je vais voir.


JAKONIL[b]
Commenter la réponse de cs_jakonil
Messages postés
10
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
28 mars 2010
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