Kampfschaf
Still Fresh
- Joined
- Dec 12, 2008
- Messages
- 13
Guten Abend!
In folgendem Code adde ich ein Bild durch Klick mit dem Stift an die gewünschte Position. Nunmöchte ich, wenn ich woanders inklicke (oder bewege) das dass Bild welches ich gerade geaddet habe mitkommt. Stattdessen fügt er ein weiteres hinzu und das alte bleibt an seiner Stelle. Das kann ich sicher 100 mal machen ^^ Ich brauche also nachdem 2. Klick einen refresh der Position des Bildes!
Danke schonmal!
In folgendem Code adde ich ein Bild durch Klick mit dem Stift an die gewünschte Position. Nunmöchte ich, wenn ich woanders inklicke (oder bewege) das dass Bild welches ich gerade geaddet habe mitkommt. Stattdessen fügt er ein weiteres hinzu und das alte bleibt an seiner Stelle. Das kann ich sicher 100 mal machen ^^ Ich brauche also nachdem 2. Klick einen refresh der Position des Bildes!
Danke schonmal!
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <SDL.h>
#include <SDL_image.h>
/* GP2X button mapping */
enum MAP_KEY
{
VK_UP , // 0
VK_UP_LEFT , // 1
VK_LEFT , // 2
VK_DOWN_LEFT , // 3
VK_DOWN , // 4
VK_DOWN_RIGHT , // 5
VK_RIGHT , // 6
VK_UP_RIGHT , // 7
VK_START , // 8
VK_SELECT , // 9
VK_FL , // 10
VK_FR , // 11
VK_FA , // 12
VK_FB , // 13
VK_FX , // 14
VK_FY , // 15
VK_VOL_UP , // 16
VK_VOL_DOWN , // 17
VK_TAT // 18
};
/* The screen surface, joystick device */
SDL_Surface *screen = NULL;
SDL_Joystick *joy = NULL;
SDL_Event event;
SDL_Surface *image = IMG_Load("test.png");
SDL_Rect targetpos;
int done;
int MouseX;
int MouseY;
int picCount;
void Terminate(void)
{
SDL_Quit();
#ifdef GP2X
chdir("/usr/gp2x");
execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL);
#endif
}
void showpic()
{
targetpos.x = targetpos.x;
targetpos.y = targetpos.y;
SDL_BlitSurface(image, NULL, screen, &targetpos);
SDL_Flip(screen);
}
int main (int argc, char *argv[])
{
/* Initialize SDL */
if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK) < 0) {
fprintf (stderr, "Couldn't initialize SDL: %s\n", SDL_GetError ());
exit (1);
}
atexit (Terminate);
SDL_ShowCursor(SDL_DISABLE);
/* Set 320x240 16-bits video mode */
screen = SDL_SetVideoMode (320, 240, 16, SDL_SWSURFACE);
if (screen == NULL) {
fprintf (stderr, "Couldn't set 320x240x16 video mode: %s\n", SDL_GetError ());
exit (2);
}
/* Check and open joystick device */
if (SDL_NumJoysticks() > 0) {
joy = SDL_JoystickOpen(0);
if(!joy) {
fprintf (stderr, "Couldn't open joystick 0: %s\n", SDL_GetError ());
}
}
#ifdef GP2X
/* Only use GP2X code here */
#endif
#ifdef WIN32
/* Only use Windows code here */
#endif
int button, x=50, y=50;
picCount = 0;
done = 0;
while (!done)
{
if (picCount >= 1) showpic();
/* Check for events */
while (SDL_PollEvent (&event))
{
switch (event.type)
{
case SDL_JOYBUTTONDOWN:
/* if press Start button, terminate program */
if ( event.jbutton.button == VK_START )
done = 1;
break;
case SDL_MOUSEBUTTONDOWN:
MouseX = event.button.x;
MouseY = event.button.y;
targetpos.x = MouseX - 25;
targetpos.y = MouseY - 25;
picCount = picCount + 1;
break;
case SDL_JOYBUTTONUP:
break;
case SDL_QUIT:
done = 1;
break;
default:
break;
}
}
/* Processing */
}
return 0;
}