mvc open pdf in new tab : Some pdf image extract application control tool html web page .net online c25-part889

303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 251 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
zozor = SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 00, 255));
/* Transparence Alpha moyenne (128) : */
SDL_SetAlpha(zozor, SDL_SRCALPHA, 128);
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
Vous noterez que j'ai conservé la transparence de SDL_SetColorKey. Les 2 types de transparence sont en effet
combinables.
Ce tableau vous montre à quoi ressemble Zozor selon la valeur de Alpha : 
Alpha
Aperçu
255 
(entièrement opaque)
190
128 
(transparence moyenne)
Some pdf image extract - Select, copy, paste PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract jpg from pdf; how to extract images from pdf file
Some pdf image extract - VB.NET PDF Image Extract Library: Select, copy, paste PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract pdf images; extract text from pdf image
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 252 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
75
(entièrement transparente)
La transparence Alpha 128 (transparence moyenne) est une valeur spéciale qui est optimisée par la SDL. Ce type de
transparence est plus rapide à calculer pour votre ordinateur que les autres. C'est peut être bon à savoir si vous utilisez
beaucoup de transparence Alpha dans votre programme.
Charger plus de formats d'image avec SDL_Image
La SDL ne gère que les Bitmaps (BMP) comme on l'a vu. 
A priori, ce n'est pas un très gros problème parce que la lecture des BMP est rapide pour la SDL, mais il faut reconnaître qu'aujourd'hui
on est plutôt habitué à utiliser d'autres formats. En particulier, nous sommes habitués aux formats d'images "compressés" comme le PNG,
le GIF et le JPEG. Ca tombe bien, il existe justement une librairie SDL_Image qui gère tous les formats suivants : 
TGA
BMP
PNM
XPM
XCF
PCX
GIF
JPG
TIF
LBM
PNG
Il est possible de rajouter des extensions à la SDL. Ce sont des librairies qui ont besoin de la SDL pour fonctionner. On peut voir ça
comme des add-ons. SDL_Image est l'une d'entre elles. 
VB.NET PDF Password Library: add, remove, edit PDF file password
RasterEdge XDoc.PDF SDK provides some PDF security settings about password to help protect your PDF document in VB.NET project.
extract images from pdf online; how to extract images from pdf
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
Here explains some usages about HTML5 PDF Viewer annotation functionalities. C#.NET: Create PDF Online in ASP.NET. C#.NET: Edit PDF Image in ASP.NET.
pdf image extractor; extract pdf pages to jpg
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 253 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Installer SDL_image
Téléchargement 
Il y a une page spéciale sur le site de la SDL qui référence les librairies utilisant la SDL. Cette page s'intitule Libraries, vous trouverez un
lien dans le menu de gauche. 
Vous pourrez voir qu'il y a pas mal de librairies disponibles. Celles-ci ne proviennent pas des auteurs de la SDL généralement, ce sont
plutôt des utilisateurs de la SDL qui proposent leurs librairies. 
Certaines sont très bonnes et méritent le détour, d'autres sont moins bonnes et encore buggées. Il faut arriver à faire le tri 
Cherchez SDL_Image dans la liste... 
Bon allez, je suis de bonne humeur : voici un lien direct vers la page de téléchargement de SDL_Image pour vous aider 
Téléchargez la version de SDL_Image qui vous correspond dans la section Binary (ne prenez PAS la source, on n'en a pas besoin !) 
Si vous êtes sous Windows téléchargez SDL_image-devel-1.2.4-VC6.zip 
même si vous n'utilisez pas Visual C++ ! 
Installation 
Dans ce zip vous trouverez : 
SDL_image.h : le seul header dont a besoin la librairie SDL_image. Placez-le dans mingw32/include/SDL/, c'est-à-dire à côté des
autres headers de la SDL.
SDL_image.lib : placez-le dans mingw32/lib. Oui, je sais, je vous ai dit que normalement les .lib étaient des fichiers réservés à
Visual, mais ici exceptionnellement le .lib fonctionnera même avec le compilateur mingw.
Plusieurs DLL : placez-les toutes dans le dossier de votre projet (à côté de SDL.dll donc).
Ensuite, vous devez modifier les options de votre projet pour "linker" avec le fichier SDL_image.lib. 
Si vous êtes sous Code::Blocks par exemple, allez dans le menu Projects / Build options. Dans l'onglet Linker, cliquez sur le bouton "Add"
et indiquez où se trouve le fichier SDL_image.lib 
Si on vous demande "Keep as a relative path ?", répondez ce que vous voulez ça ne changera rien dans l'immédiat. Je recommande de
répondre "Non" personnellement 
Ensuite, vous n'avez plus qu'à inclure le header SDL_image.h dans votre code source comme ceci : 
Code : C
#include <SDL/SDL_image.h> 
Et voilà, la librairie SDL_image devrait maintenant fonctionner (à condition que vous ayez bien fait exactement tout ce que j'ai indiqué
bien sûr 
Si vous êtes sous Dev-C++ ou Visual Studio, la manipulation est quasiment la même. Si vous avez réussi à installer la SDL,
vous n'aurez aucun problème pour installer SDL_image 
Charger les images
En fait, installer SDL_image est 100 fois plus compliqué que de l'utiliser, c'est vous dire la complexité du truc 
Il y a UNE fonction à connaître : IMG_Load. 
Elle prend un paramètre : le nom du fichier à ouvrir. 
Ce qui est génial, c'est que cette fonction est capable d'ouvrir tous les types de fichiers que gère SDL_image (GIF, PNG, JPG, mais aussi
BMP, TIF...). Elle détectera toute seule le type du fichier en fonction de son extension. 
Comme SDL_image peut aussi ouvrir les BMP, vous pouvez même oublier la fonction SDL_LoadBMP maintenant et n'utiliser
plus que IMG_Load pour le chargement de n'importe quelle image.
C# PDF Password Library: add, remove, edit PDF file password in C#
Able to change password on adobe PDF document in C#.NET. To help protect your PDF document in C# project, XDoc.PDF provides some PDF security settings.
extract vector image from pdf; extract photos pdf
C# Create PDF Library SDK to convert PDF from other file formats
Load PDF from existing documents and image in SQL server. creating toolkit, if you need to add some text and draw some graphics on created PDF document file
some pdf image extract; extract image from pdf using
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 254 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Autre bon point : si l'image que vous chargez gère la transparence (comme c'est le cas des PNG et des GIF), alors SDL_image activera
automatiquement la transparence pour cette image ! Cela vous évite donc d'avoir à appeler SDL_SetColorKey 
Voici le 
code source complet qui charge sapin.png et l'affiche. 
Notez bien que j'inclue SDL/SDL_image.h et que je ne fais pas appel à SDL_SetColorKey car mon PNG est transparent. 
Vous allez voir que j'utilise IMG_Load partout dans ce code en remplacement de SDL_LoadBMP. 
Code : C
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h> /* Inclusion du header de SDL_image */
void pause();
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *imageDeFond = NULL, *sapin = NULL;
SDL_Rect positionFond, positionSapin;
positionFond.x = 0;
positionFond.y = 0;
positionSapin.x = 500;
positionSapin.y = 260;
SDL_Init(SDL_INIT_VIDEO);
SDL_WM_SetIcon(IMG_Load("sdl_icone.bmp"), NULL);
ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
imageDeFond = IMG_Load("lac_en_montagne.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
/* Chargement d'un PNG avec IMG_Load
Celui-ci est automatiquement rendu transparent car les informations de
transparence sont codées à l'intérieur du fichier PNG */
sapin = IMG_Load("sapin.png");
SDL_BlitSurface(sapin, NULL, ecran, &positionSapin);
SDL_Flip(ecran);
pause();
SDL_FreeSurface(imageDeFond);
SDL_FreeSurface(sapin);
SDL_Quit();
return EXIT_SUCCESS;
}
void pause()
{
int continuer = 1;
SDL_Event event;
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
}
}
}
Résultat : 
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
mark the source PDF file by adding some comments, notes on, which integrates advanced VB.NET PDF editing functions and VB.NET image annotating features
extract image from pdf file; extract image from pdf acrobat
VB.NET Image: How to Process & Edit Image Using VB.NET Image
Besides, if you want to apply some popular image effects to target image file, like image sharpening, image vintage effect creating, image color adjusting and
extract images pdf; extract image from pdf c#
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 255 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Quand même bien pratique cette petite librairie 
Vous êtes maintenant capables d'afficher de nombreux type d'images dans vos
programmes SDL, et, surtout, de rendre ces images transparentes. 
Avec ces fonctions pourtant très simples de la SDL, vous allez pouvoir réaliser à peu près tous les programmes que vous voulez. 
Mais avant ça, il va falloir étudier un chapitre très important de la SDL : les évènements. Cela vous permettra de gérer le clavier, la
souris et le joystick, rien de moins que ça ! 
Au lieu d'avoir un programme "passif" comme maintenant où vous vous contentez de regarder votre fenêtre, vous allez pouvoir contrôler
un personnage au clavier, cliquer dans la fenêtre etc. 
La gestion des évènements (Partie 1/2)
La gestion des évènements est une des fonctionnalités les plus importantes de la SDL. 
C'est, je trouve, intéressant et passionnant. C'est à partir de là que vous allez vraiment être capables de tout faire. 
Concrètement, qu'est-ce que c'est ? 
Par exemple, quand l'utilisateur appuie sur une touche du clavier, on dit qu'il s'est produit un
évènement. Mais ce n'est pas tout ! Il existe bien d'autres types d'évènements : 
Quand l'utilisateur clique avec la souris
Quand il bouge la souris
Quand il réduit la fenêtre
Quand il demande à fermer la fenêtre etc.
Tout ça, ce sont des évènements. Ce sont des "signaux" envoyés à votre programme pour
l'informer qu'il s'est passé quelque chose. 
Le rôle de ce chapitre sera de vous apprendre à traiter ces évènements. Vous serez capables de dire à l'ordinateur "Si l'utilisateur clique 
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
and manage those PDF files, especially when they are processing some PDF document files C# PDF: Add Image to PDF Page Using C#.NET, C# PDF: Extract Page(s
extract vector image from pdf; pdf image extractor online
C# Create PDF from images Library to convert Jpeg, png images to
It enables you to build a PDF file with one or Various image forms are supported which include Png, Jpeg, Bmp Some C# programming demos are illustrated below.
extract images pdf acrobat; extract images from pdf c#
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 256 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
à cet endroit, fais ça, sinon fais cela... S'il bouge la souris, fais ceci. S'il appuie sur la touche Q, arrête le programme..." etc. 
Nous ne traiterons ici que les évènements du clavier et de la souris. 
D'autres évènements un peu plus complexes, comme ceux générés par le joystick, seront vus plus tard.
Soyez plus que jamais attentifs, parce que ça vaut vraiment le coup 
Le principe des évènements
Pour nous habituer aux évènements, nous allons apprendre à traiter le plus simple d'entre eux : la demande de fermeture du
programme. 
C'est un évènement qui se produit lorsque l'utilisateur clique sur la croix pour fermer la fenêtre : 
C'est vraiment l'évènement le plus simple. En plus, c'est un évènement que vous avez utilisé jusqu'ici sans vraiment le savoir, car il était
situé dans la fonction pause() ! 
En effet, la fonction pause servait à attendre que l'utilisateur demande à fermer le programme. Si on n'avait pas fait cette fonction, la
fenêtre se serait affichée et fermée en un éclair ! 
A partir de maintenant, vous pouvez oublier la fonction pause. Supprimez-la carrément de votre code source, car nous
allons apprendre à la reproduire 
La variable d'évènement
Pour traiter des évènements, vous aurez besoin de déclarer une variable (juste une seule rassurez-vous) de type SDL_Event. Appelez-la
comme vous voulez, moi je vais l'appeler "event" (ce qui signifie "évènement" en anglais). 
Code : C
SDL_Event event;
Nous allons nous contenter pour nos tests d'un main très basique qui affiche juste une fenêtre, comme on l'a vu il y a quelques chapitres.
Voici à quoi doit ressembler votre main : 
Code : C
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL;
SDL_Event event; /* Cette variable servira plus tard à gérer les évènements */
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
SDL_Quit();
return EXIT_SUCCESS;
}
C'est donc un code très basique, il ne contient qu'une chose en plus : la déclaration de la variable event dont nous allons bientôt nous
servir. 
Testez ce code : comme prévu, la fenêtre va s'afficher et se fermer immédiatement après. 
La boucle des évènements
How to C#: Basic SDK Concept of XImage.Raster
VB.NET How-to, VB.NET PDF, VB.NET Word classes to convert, process, edit, and annotate image from local can load convert and save define some specified options
extract jpeg from pdf; extract images from pdf
C#: How to Add HTML5 Document Viewer Control to Your Web Page
Note: some versions of Visual Studio use addCommand(new CommandAnnotation("image", new AnnoStyle _userCmdDemoPdf = new UserCommand("pdf"); _userCmdDemoPdf.addCSS
how to extract images from pdf in acrobat; pdf extract images
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 257 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Lorsqu'on veut attendre un évènement, on fait généralement une boucle. 
Cette boucle se répètera tant qu'on n'a pas eu l'évènement
voulu. 
On va avoir besoin d'utiliser un booléen qui indiquera si on doit continuer la boucle ou pas. 
Créez donc ce booléen que vous appellerez par exemple continuer : 
Code : C
int continuer = 1;
Ce booléen est mis à 1 au départ car on veut que la boucle se répète TANT QUE la variable continuer vaut 1 (vrai). Dès qu'elle vaudra 0
(faux), alors on sortira de la boucle et le programme s'arrêtera. 
Voici la boucle à créer : 
Code : C
while (continuer)
{
/* Traitement des évènements */
}
Voilà, on a pour le moment une boucle infinie qui ne s'arrêtera que si on met la variable continuer à 0. 
C'est ce que nous allons écrire à l'intérieur de cette boucle qui est le plus intéressant 
Récupération de l'évènement
Maintenant, faisons appel à une fonction de la SDL pour demander si un évènement s'est produit. 
On dispose de 2 fonctions qui font cela, mais d'une manière différente : 
SDL_WaitEvent : elle attend qu'un évènement se produise. Cette fonction est dite bloquante car elle suspend l'exécution du
programme tant qu'aucun évènement ne s'est produit.
SDL_PollEvent : cette fonction fait la même chose mais n'est pas bloquante. Elle vous dit si un évènement s'est produit ou pas.
Même si aucun évènement ne s'est produit, elle rend la main à votre programme de suite.
Ces 2 fonctions sont utiles, mais dans des cas différents. 
Grosso modo, et pour résumer, si vous utilisez SDL_WaitEvent votre programme utilisera très peu de processeur car il attendra qu'un 
évènement se produise. 
En revanche, si vous utilisez SDL_PollEvent, votre programme va parcourir votre boucle while et rappeler SDL_PollEvent indéfiniment
jusqu'à ce qu'un évènement se soit produit. A tous les coups, vous utiliserez 100% du processeur. 
Mais alors, il faut tout le temps utiliser SDL_WaitEvent si cette fonction utilise moins le processeur non ?
Non, car il y a des cas où SDL_PollEvent se révèle indispensable. C'est le cas des jeux dans lesquels l'écran se met à jour même quand il
n'y a pas d'évènement. 
Prenons par exemple Tetris : les blocs descendent tous seuls, il n'y a pas besoin que l'utilisateur crée d'évènement pour ça ! Si on avait
utilisé SDL_WaitEvent, le programme serait resté "bloqué" dans cette fonction et vous n'auriez pas pu mettre à jour l'écran pour faire
descendre les blocs ! 
Comment fait SDL_WaitEvent pour ne pas consommer de processeur ? 
Après tout, la fonction est bien obligée de faire une boucle infinie pour tester tout le temps s'il y a un évènement ou pas non ?
C'est une question que je me posais il y a encore peu de temps. La réponse est un petit peu compliquée car ça concerne la façon dont
l'OS gère les processus (les programmes). 
Si vous voulez (mais je vous raconte ça rapidement), avec SDL_WaitEvent le processus de votre programme est mis "en pause". Votre
programme n'est donc plus traité par le processeur. 
Votre programme sera "réveillé" par l'OS au moment où il y aura un évènement. Du coup, le processeur se remettra à travailler sur votre
programme à ce moment-là. Cela explique pourquoi votre programme ne consomme pas de processeur pendant qu'il attend l'évènement. 
Bon je comprends que ce soit un peu abstrait pour vous pour le moment. Et à dire vrai vous n'avez pas besoin de comprendre ça
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 258 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
maintenant. Vous comprendrez mieux toutes les différences plus loin en pratiquant. 
Pour le moment, nous allons utiliser SDL_WaitEvent car notre programme reste très simple. Ces 2 fonctions s'utilisent de toute façon de
la même manière. 
Vous devez envoyer à la fonction l'adresse de votre variable event qui stocke l'évènement. 
Comme cette variable n'est pas un pointeur (regardez la déclaration à nouveau), nous allons mettre le symbole & devant le nom de la
variable afin de donner l'adresse : 
Code : C
SDL_WaitEvent(&event);
Après appel de cette fonction, la variable event contient 
obligatoirement un évènement . 
Ce n'aurait pas forcément été le cas si on avait utilisé SDL_PollEvent : cette fonction aurait pu renvoyer "Pas
d'évènement".
Analyse de l'évènement
Maintenant, nous possédons une variable event qui contient des informations sur l'évènement qui s'est produit. 
Il faut regarder la sous-variable event.type et faire un test sur sa valeur. Généralement on utilise un switch pour tester l'évènement. 
Mais comment on sait quelle valeur correspond à l'évènement "Quitter" par exemple ?
La SDL nous fournit des constantes, ce qui simplifie grandement l'écriture du programme 
Il existe de nombreuses constantes (autant qu'il y a d'évènements possibles). Nous les verrons au fur et à mesure plus loin dans ce
chapitre. 
Code : C
while (continuer)
{
SDL_WaitEvent(&event)/* Récupèration de l'évènement dans event */
switch(event.type) /* Test du type d'évènement */
{
case SDL_QUIT: /* Si c'est un évènement de type "Quitter" */
continuer = 0;
break;
}
}
1.  Dès qu'il y a un évènement, la fonction SDL_WaitEvent renvoie cet évènement dans event.
2.  On analyse le type d'évènement grâce à un switch. Le type de l'évènement se trouve dans event.type
3.  On teste à l'aide de "case" dans le switch le type de l'évènement. Pour le moment, on ne teste que l'évènement SDL_QUIT
(demande de fermeture du programme) car c'est le seul qui nous intéresse. 
Si c'est un évènement SDL_QUIT, c'est que l'utilisateur a demandé à quitter le programme. Dans ce cas on met le booléen
continuer à 0. Au prochain tour de boucle, la condition sera fausse et donc la boucle s'arrêtera. Le programme s'arrêtera
ensuite.
Si ce n'est pas un évènement SDL_QUIT, c'est qu'il s'est passé autre chose : l'utilisateur a appuyé sur une touche, a cliqué ou
même a tout simplement bougé la souris dans la fenêtre. Comme ces autres évènements ne nous intéressent pas, on ne les
traite pas. On ne fait donc rien : la boucle recommence et on attend à nouveau un évènement (on repart à l'étape 1).
Ce que je viens de vous expliquer est super important. 
Si vous avez compris ce code, vous avez tout compris et le reste du chapitre sera
aussi facile qu'une partie de Mario Kart en mode 50cc (pour ceux qui ne connaissent pas Mario Kart, j'ai voulu dire que ça serait "un jeu
d'enfant" 
). 
Le code complet
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 259 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Le code complet
Code : C
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL;
SDL_Event event; /* La variable contenant l'évènement */
int continuer = 1/* Notre booléen pour la boucle */
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
while (continuer) /* TANT QUE la variable ne vaut pas 0 */
{
SDL_WaitEvent(&event)/* On attend un évènement qu'on récupère dans event */
switch(event.type) /* On teste le type d'évènement */
{
case SDL_QUIT: /* Si c'est un évènement QUITTER */
continuer = 0/* On met le booléen à 0, donc la boucle va s'arrêter */
break;
}
}
SDL_Quit();
return EXIT_SUCCESS;
}
Voilà le code complet. Il n'y a rien de bien difficile, si vous avez suivi jusqu'ici ça ne devrait pas vous surprendre. 
D'ailleurs, vous remarquerez qu'on n'a fait que reproduire ce que faisait la fonction pause (vérifiez le code, c'est le même, sauf qu'on a
tout mis dans le main). Bien entendu, il est préférable de mettre ce code dans une fonction comme pause à part, car cela allège la
fonction main et la rend plus lisible 
Le clavier
Nous allons maintenant étudier les évènements produits par le clavier. 
Si vous avez compris le début du chapitre, vous n'aurez 
AUCUN problème pour
traiter les autres types d'évènements. C'est tellement facile qu'on en pleurerait
presque 
Tellement facile que c'est pas la peine que je vous l'explique 
(mais bon je vais vous l'expliquer quand même, je m'en voudrais sinon 
Pourquoi est-ce si simple ? Parce que maintenant que vous avez compris le coup de
la boucle, tout ce que vous allez avoir à faire c'est rajouter d'autres "case" dans le
"switch" pour traiter d'autres types d'évènements 
C'est duuuur hein 
Les évènements du clavier
Il existe 2 évènements différents qui peuvent être générés par le clavier : 
SDL_KEYDOWN : quand une touche du clavier est enfoncée
SDL_KEYUP : quand une touche du clavier est relâchée
Pourquoi y a-t-il ces 2 évènements ? 
Parce que quand vous appuyez sur une touche, en fait il se passe 2 choses : vous enfoncez la touche (SDL_KEYDOWN), puis vous la
relâchez (SDL_KEYUP). La SDL vous permet de traiter ces 2 évènements, ce qui sera bien pratique vous verrez 
Pour le moment, nous allons nous contenter de traiter l'évènement SDL_KEYDOWN (appui de la touche) : 
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 260 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Code : C
while (continuer)
{
SDL_WaitEvent(&event);
switch(event.type)
{
case SDL_QUIT:
continuer = 0;
break;
case SDL_KEYDOWN: /* Si appui d'une touche */
continuer = 0;
break;
}
}
Si on appuie sur une touche, le programme s'arrêtera 
Testez, vous verrez 
Récupérer la touche
Savoir qu'une touche a été enfoncée c'est bien, mais savoir laquelle, c'est quand même mieux 
On peut récupérer la touche grâce à la sous-sous-sous-variable (ouf) : event.key.keysym.sym. 
Cette variable contient la valeur de la touche qui a été enfoncée (elle fonctionne aussi lors d'un relâchement de la touche SDL_KEYUP). 
L'avantage, c'est que la SDL permet de récupérer la valeur de toutes les touches du clavier. Il y a les lettres et les
chiffres bien sûr (ABCDE0123...), mais aussi la touche Echap, ou encore Impr. Ecran, Suppr, Entrée etc... 
Il y a une constante pour chacune des touches du clavier. Vous trouverez cette liste dans la documentation de
la SDL, que vous avez très probablement téléchargée avec la librairie quand vous avez dû l'installer. 
Si tel n'est pas le cas, je vous recommande fortement de retourner sur le site de la SDL et d'y télécharger la
documentation, car elle est très utile. 
Vous trouverez la liste des touches du clavier dans la section "SDL Keysym definitions". 
Comme je suis un type super sympa (et modeste avec ça), je me suis permis de mettre à votre disposition sur le
Site du Zér0 la page en question : 
Liste des touches du clavier (keysyms)
Bien entendu, la documentation est en anglais donc la liste est en anglais. Si vous voulez vraiment programmer il est important d'être
capable de lire l'anglais car toutes les documentations sont en anglais et vous ne pouvez pas vous en passer ! 
Il y a 2 tableaux dans cette liste : un grand (au début) et un petit (à la fin). Nous nous intéresserons au grand tableau. 
Dans la première colonne vous avez la constante, dans la seconde la représentation équivalente en ASCII (certaines touches comme
"Shift" n'ont pas de valeur ASCII correspondante), et enfin dans la troisième colonne vous avez une description de la touche. 
Prenons par exemple la touche "Echap" ("Escape" en anglais). On peut tester si la touche enfoncée est "Echap" comme ceci : 
Code : C
switch (event.key.keysym.sym)
{
case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
continuer = 0;
break;
}
J'utilise un switch pour faire mon test mais j'aurais aussi bien pu utiliser un if. 
J'ai toutefois plutôt tendance à me servir des switch quand je traite les évènements car je teste beaucoup de valeurs
Documents you may be interested
Documents you may be interested