Les Snippets

Connexion

identification d'un élément de quadrillage en index ligne et colonne

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/08/2011 17:47:11 et initié par Jean_Jean [Liste]
Vue : 1369
Catégorie(s) : Maths, Trucs & Astuces, Divers, Graphique
Langages dispo pour ce code :
- Delphi 5



Langage : Delphi 5
Date ajout : 18/08/2011
Posté par Jean_Jean [Liste]
{------------------------------------------------------------------------------}
{Donne les numéros de colonne et de ligne de coordonnées cartésienne d'une
 Matrice graphique, Bitmap ou quadrillage d'une image découpées en cases d'une
 dimension définie.
 Entrées : X   = coordonnée X du clic dans la zone graphique
           Y   = coordonnée Y du clic dans la zone graphique
           L   = Largeur de la matrice en pixels
           H   = hauteur de la matrice
           Lc  = largeur d'une case
           Hc  = hauteur d'une case
           Ofx = offset X (sur la largeur)
           Ofy = offset y (sur la hauteur)
 Sortie  : Lig = Identification de la Ligne du clic
           Col = Identification de la ligne du Clic
 Remarque : les coordonnées (0,0) sont en Haut à gauche
            les numéros de ligne et colonne sont dans le même repère
{------------------------------------------------------------------------------}
Procedure ClicToZoneIdent(X,Y,L,H,Lc,Hc,Ofx,Ofy : Integer; Var xCol,yLig : Integer);
Begin
  yLig := (H - Ofy + Y) div Hc;
  xCol := (L - Ofx + X) div Lc;
end;
Exemple d'utilisation : Identifier une case sur un plateau d'échecs
{-- Gestion des clic sur le plateau -------------------------------------------------------------
Image1 est de type TImage et comprend l'image de l'échiquier
Pas est un coté d'une case (carré). Les offset éliminent les épaisseur du bord en X et Y
--------------------------------------------------------------------------------------------------}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ...
  ClicToZoneIdent(X,Y,image1.Width,Image1.Height,Pas,Pas,BordX,BordY,xDep,yDep);
  xDep := 16 - xDep; // =>  Chgt de repère : cartésien vers plateau échecs
  yDep := 16 - yDep;
  if (xDep <> 0) and (yDep <> 0) then stTCase.Caption := chr(73-xDep)+InttoStr(yDep)
                                                  else Windows.Beep(1000,400);
  ...
end;

Remarque :
la procédure ne vérifie pas les débordements, d'où une vérification minimale pour un clic qui serait juste aux bords (à quelques pixels près) dans l'exemple.
chr(73-xdep) affiche les colonnes de A à H
L'affichage est donc de type A2 : 1ère colonne 2ème ligne

Snippets en rapport avec : Image, Matrice, Graphique, Quadrillage, Repérage



Codes sources en rapport avec : Image, Matrice, Graphique, Quadrillage, Repérage

{C# / C#.NET} MANIPULATION DES COULEURS AVEC LES MATRICES
Les matrices permettent de faire des manipulations intéressantes au niveau des couleurs. J'ai mis da...

{C / C++ / C++.NET} HDR EXPOSURE FUSION
Code basé sur GDI+ (bibliothèque microsoft pour les images, composant de base du NETframework) et le...

{Visual Basic, VB6, VB.NET, VB 2005} USERCONTROL IMAGE À PARTIR DE GDI+
Le usercontrol gdIMG permet d'afficher une image stockée dans le propertybag (pas de fichier dépenda...

{Visual Basic, VB6, VB.NET, VB 2005} SAUVEGARDER UNE IMAGE EN PNG
Bonjour, J'avais à l'esprit cette légende urbaine qui dit qu'"il est difficile d'enregistrer une ...

{Visual Basic, VB6, VB.NET, VB 2005} JAUGE DE TYPE HORIZON ARTIFICIEL POUR SIMULATEUR DE VOL
(Programme en Microsoft Visual Basic 2010 Express) Test en vue de réaliser une application pour ...

{Delphi} COMPOSANT TZSIMAGE
Composant prêt à l'emploi (ou presque) pour visionner des photos avec outils d'affichage, de sélecti...

{Visual Basic, VB6, VB.NET, VB 2005} CRÉATION D'UN MASQUE GRAPHIQUE POUR MODIFIER LA COULEUR D'UN OBJET SUR UNE IMAGE
C'est la première source que je dépose. J'espère que vous serez indulgents... Cette source permet d...

{Visual Basic, VB6, VB.NET, VB 2005} GENERATEUR DE CAPTCHA
Ce projet permet d'apprendre à utiliser l'outil Graphics dans le but de modifier des images. Cette s...

{Visual Basic, VB6, VB.NET, VB 2005} PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTREMENT EN BMP
Un petit programme de dessin qui utilise PSet. Choix de la taille du pinceau, des couleurs, du mode...

{Visual Basic, VB6, VB.NET, VB 2005} IMAGE REFLECT - GÉNÉRER LE REFLET D'UNE IMAGE
C'est une petite DLL qui génère une image ou il y a l'image originale et son reflet en dessous qui s...