begin process at 2013 05 18 18:06:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Delphi et asm

 > ASM/DELPHI DESSINER UN PIXEL EN ASSEMBLEUR

ASM/DELPHI DESSINER UN PIXEL EN ASSEMBLEUR


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Delphi et asm Niveau :Débutant Date de création :06/05/2003 Date de mise à jour :06/05/2003 19:29:38 Vu :6 883

Auteur : magic56

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Voilà mon tout premier code en assembleur (soyez indulgents ;o) ).
Il permet de dessiner un point aux coordonnées x,y avec la couleur de votre choix sur un canvas par exemple.
Pour l'utiliser : MonSetPixel(canvas.handle,10,10,clred); par exemple.


Source

  • procedure MonSetPixel(handle : hdc;x,y:integer;couleur:TColor);
  • asm
  • // sauvegarde des registres
  • pushad
  • pushfd
  • push eax
  • push ebx
  • mov ebx,eax
  • // on dessine le point
  • push couleur
  • push y
  • push x
  • push handle
  • call SetPixel //appel de la fonction setpixel
  • //on recupere les registres
  • mov eax,ebx
  • pop ebx
  • pop eax
  • popfd
  • popad
  • end;
procedure MonSetPixel(handle : hdc;x,y:integer;couleur:TColor); 
asm
  // sauvegarde des registres
  pushad
  pushfd
  push eax
  push ebx
  mov ebx,eax
  // on dessine le point
  push couleur
  push y
  push x
  push handle
  call SetPixel //appel de la fonction setpixel
  //on recupere les registres
  mov eax,ebx
  pop ebx
  pop eax
  popfd
  popad
end;

 Conclusion

Tous les commentaires sont les bienvenus.
Pour le niveau vu que je débute je mets 1...


 Sources de la même categorie

Source avec Zip APPELER UNE API EN ASM AVEC DELPHI par DeadlyPredator
RENVOIT UNE CHAINE DE X FOIS LE CARACTÈRE DEMANDÉ par cutmaster
PETIT ÉQUIVALENT DU ?: DU C EN DELPHI POUR LES CHAINES, LONG... par cutmaster
AVOIR LE NOM DU JOUR DE LA SEMAINE DÉSIGNÉ par cutmaster
REMPLISSAGE FORMATÉ D'UN SHORTSTRING par cutmaster

Commentaires et avis

Commentaire de balgrim le 25/06/2003 12:15:59

Ta source ne dessine pas un pixel, elle appelle l'api windows setpixel, et c'est elle qui le dessine... Bon voila un petit truc que j'ai fait, qui est bcp plus rapide que le pixel[x,y]:

procedure MXPoint(Bitmap:TBitmap;X,Y:dword;color:dword);
var
p1:pointer;
begin
if (X>Bitmap.Height-1) or (Y>Bitmap.Width-1) then exit;
p1:=Bitmap.ScanLine[X-1];
case Bitmap.PixelFormat of
pf32bit:
  asm
  push edi
  mov edi,p1
  mov eax,y
  shl eax,2
  add edi,eax
  mov eax,color
  mov [edi],eax
  pop edi
  end;
pf24bit:
  asm
  push edi
  mov edi,p1
  mov eax,y
  imul eax,3
  add edi,eax
  mov eax,color
  mov ecx,eax
  shr ecx,16
  mov [edi],ax
  mov [edi+2],cl
  pop edi
  end;
else
bitmap.Canvas.Pixels[X,Y]:=Color;
end;

Elle est pas toute a fait au point, il doit y avoir qque bug :) enfin vala la ça ecrit directement 1 pixel dans le bitmap ;)

Commentaire de jlmcom le 06/09/2004 18:36:48

Merci à vous Magic56 et balgrim pour votre contribution!

je vais avoir besoin de me remettre un peu à l'assembleur: travail sur RAM vidéo, car je n'ai pas trouvé de fonction en delphi pour lire les tables du jeu de caractères en réserve.

je suis de la génération Z80, alors vous comprenez ma déroute dans ce monde de vitesse Giga micropro!

mais si passionnant!

merci!

jlmcom

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales