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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 literal 0 HcmV?d00001