From 50708841c82ce54d3897e600d5fce3e727623c55 Mon Sep 17 00:00:00 2001 From: Tipudeveloper Date: Mon, 11 May 2026 21:33:51 +0300 Subject: [PATCH] added core_input_mouse_drag --- examples/core/core_input_mouse_drag.c | 73 ++++++++++++++++++++++++ examples/core/core_input_mouse_drag.png | Bin 0 -> 49514 bytes 2 files changed, 73 insertions(+) create mode 100644 examples/core/core_input_mouse_drag.c create mode 100644 examples/core/core_input_mouse_drag.png diff --git a/examples/core/core_input_mouse_drag.c b/examples/core/core_input_mouse_drag.c new file mode 100644 index 000000000..0c9b2ffe3 --- /dev/null +++ b/examples/core/core_input_mouse_drag.c @@ -0,0 +1,73 @@ +/******************************************************************************************* +* +* raylib [core] example - input mouse drag +* +* Example complexity rating: [★★☆☆] 2/4 +* +* Example originally created with raylib 6.0, last time updated with raylib 6.0 +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2026 tipudeveloper (@tipudeveloper) +* +********************************************************************************************/ + +#include "raylib.h" + +int main(void) +{ + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [core] example - input mouse drag"); + SetTargetFPS(60); + + Rectangle rect = { screenWidth / 2 - 50, screenHeight / 2 - 50, 100, 100 }; + Vector2 mousePosition = { 0.0f, 0.0f }; + bool dragging = false; + + while (!WindowShouldClose()) + { + mousePosition = GetMousePosition(); + + // Begin dragging if the cursor is inside the rectangle when the left button is pressed + if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + { + if (CheckCollisionPointRec(mousePosition, rect)) + { + dragging = true; + } + } + else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + { + // Stop dragging when the button is released + dragging = false; + } + + if (dragging) + { + // Keep the rectangle centered on the cursor while dragging + rect.x = mousePosition.x - rect.width / 2; + rect.y = mousePosition.y - rect.height / 2; + } + + // Use one mouse wheel sample per frame to scale the rectangle + float wheelMove = GetMouseWheelMove(); + rect.width += wheelMove * 10.0f; + rect.height += wheelMove * 10.0f; + + // Clamp rectangle size so it remains visible + if (rect.width < 10) rect.width = 10; + if (rect.height < 10) rect.height = 10; + if (rect.width > 500) rect.width = 500; + if (rect.height > 500) rect.height = 500; + BeginDrawing(); + ClearBackground(RAYWHITE); + DrawRectangleRec(rect, RED); + DrawText("Drag the rectangle and scale it with the mouse wheel", 10, 10, 20, BLACK); + EndDrawing(); + } + CloseWindow(); + return 0; +} \ No newline at end of file diff --git a/examples/core/core_input_mouse_drag.png b/examples/core/core_input_mouse_drag.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1e6b8a4bf4b3ba6eb2e877d2347c9e5d4ffb8c GIT binary patch literal 49514 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 o-`1XP2v1y9-kNk0Gm<{sZN`VY;$o1;yy=~{;