private void DrawShape(PascalShape shape) { SDL.SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); SDL.SDL_RenderClear(renderer); SDL.SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); var points = shape.Points; SDL.SDL_RenderDrawPoints(renderer, points, points.Length); SDL.SDL_RenderPresent(renderer); }
public MainForm() { InitializeComponent(); Thread thread = new Thread(() => { SDL.SDL_Init(SDL.SDL_INIT_EVERYTHING); IntPtr wnd = SDL.SDL_CreateWindow("Pascal shape SDL", 100, 100, 800, 600, SDL.SDL_WindowFlags.SDL_WINDOW_RESIZABLE | SDL.SDL_WindowFlags.SDL_WINDOW_SHOWN); var shape = new PascalShape(); renderer = SDL.SDL_CreateRenderer(wnd, -1, SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED); DrawShape(shape); bool quit = false; while (!quit) { SDL.SDL_Event sdlEvent; SDL.SDL_PollEvent(out sdlEvent); switch (sdlEvent.type) { case SDL.SDL_EventType.SDL_QUIT: { quit = true; break; } case SDL.SDL_EventType.SDL_KEYDOWN: { var key = sdlEvent.key; switch (key.keysym.sym) { case SDL.SDL_Keycode.SDLK_DOWN: shape.TransformY += 10; break; case SDL.SDL_Keycode.SDLK_UP: shape.TransformY -= 10; break; case SDL.SDL_Keycode.SDLK_LEFT: shape.TransformX -= 10; break; case SDL.SDL_Keycode.SDLK_RIGHT: shape.TransformX += 10; break; case SDL.SDL_Keycode.SDLK_LCTRL: shape.Rotate += 10; break; case SDL.SDL_Keycode.SDLK_RCTRL: shape.Rotate -= 10; break; } break; } case SDL.SDL_EventType.SDL_MOUSEBUTTONDOWN: { if (sdlEvent.button.button == SDL.SDL_BUTTON_LEFT) { if (shape.Scale < 3) { shape.Scale += 0.1; } } if (sdlEvent.button.button == SDL.SDL_BUTTON_RIGHT) { if (shape.Scale > 0.2) { shape.Scale -= 0.1; } } break; } } DrawShape(shape); Thread.Sleep(10); } SDL.SDL_DestroyRenderer(renderer); SDL.SDL_DestroyWindow(wnd); SDL.SDL_Quit(); }); thread.Start(); thread.Join(); }