From ffdce81678775b324d44224e9f11d0014bcf8e18 Mon Sep 17 00:00:00 2001 From: cmanlh Date: Wed, 30 Oct 2024 20:27:03 +0800 Subject: [PATCH] Add example for draw ellipse --- examples/Makefile | 3 +- examples/shapes/shapes_draw_ellipse.c | 84 ++++++++++++++++++++++++ examples/shapes/shapes_draw_ellipse.png | Bin 0 -> 9022 bytes 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 examples/shapes/shapes_draw_ellipse.c create mode 100644 examples/shapes/shapes_draw_ellipse.png diff --git a/examples/Makefile b/examples/Makefile index a3ce8f6d1..5a84bec6d 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -533,7 +533,8 @@ SHAPES = \ shapes/shapes_rectangle_scaling \ shapes/shapes_splines_drawing \ shapes/shapes_top_down_lights \ - shapes/shapes_rectangle_advanced + shapes/shapes_rectangle_advanced \ + shapes/shapes_draw_ellipse TEXTURES = \ textures/textures_background_scrolling \ diff --git a/examples/shapes/shapes_draw_ellipse.c b/examples/shapes/shapes_draw_ellipse.c new file mode 100644 index 000000000..70d948c3a --- /dev/null +++ b/examples/shapes/shapes_draw_ellipse.c @@ -0,0 +1,84 @@ +/******************************************************************************************* + * + * raylib [shapes] example - draw ellipse + * + * Example originally created with raylib 4.2, last time updated with raylib 5.5 + * + * Example contributed by Vlad Adrian (@demizdor) and reviewed by Ramon Santamaria (@raysan5) + * + * 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) 2022-2024 Lu Hong (@CManLH) + * + ********************************************************************************************/ + +#include "raylib.h" + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - draw ellipse"); + + float radiusH = 70.0f; + float radiusV = 100.0f; + + Vector2 ellipseCenter = (Vector2){200, 100}; + Color ellipseColor = SKYBLUE; + + Vector2 ellipseLineCenter = (Vector2){200, 325}; + Color ellipseLineColor = DARKGREEN; + + Vector2 rotationEllipseCenter = (Vector2){460, 100}; + Color rotationEllipseColor = GREEN; + + Vector2 rotationEllipseLineCenter = (Vector2){460, 325}; + Color rotationEllipseLineColor = RED; + + float angle = PI / 6.0f; + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + // Draw ellipse + DrawEllipse(ellipseCenter.x, ellipseCenter.y, radiusH, radiusV, ellipseColor); + DrawText("Ellipse!", ellipseCenter.x - 35, ellipseCenter.y, 20, BLACK); + + // Draw ellipse outline + DrawEllipseLines(ellipseLineCenter.x, ellipseLineCenter.y, radiusH, radiusV, ellipseLineColor); + DrawText("Ellipse Outline", ellipseLineCenter.x - radiusH, ellipseLineCenter.y, 20, BLACK); + + // Draw ellipse with rotation + DrawEllipseRotation(rotationEllipseCenter.x, rotationEllipseCenter.y, radiusH, radiusV, rotationEllipseColor, angle); + DrawText("Rotation Ellipse", rotationEllipseCenter.x - radiusH - 35, rotationEllipseCenter.y, 20, BLACK); + + // Draw ellipse outline with rotation + DrawEllipseLinesRotation(rotationEllipseLineCenter.x, rotationEllipseLineCenter.y, radiusH, radiusV, rotationEllipseLineColor, angle); + DrawText("Rotation Ellipse outline", rotationEllipseLineCenter.x - radiusH - 35, rotationEllipseLineCenter.y, 20, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} \ No newline at end of file diff --git a/examples/shapes/shapes_draw_ellipse.png b/examples/shapes/shapes_draw_ellipse.png new file mode 100644 index 0000000000000000000000000000000000000000..de0608c8e3ad6d260cae61d79850df55106148ce GIT binary patch literal 9022 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 pf0v!BpH=+&_12w>%=V}L zl#B_kUKV}+*NfjzzlOb-zEk)0&!_1Shr{CHR!rdR`$c7Sr?36_^>;VS=PSvQzEbNM%C#qY2GUK2PwIvz5ja{7G3JdVF7=l)d+`L-QVA9O*|KmOz*Hu4@&w4MvH$QvdjakwA_nXF}4f?u3K5jgmlOW%1_=*5D-e1nRJD_u`|^%kQl}eeZlUX1tJOU5nio z{}=x2{!F^P8aC+iZ2OYx`r$ks|TmP!~`@Qfh z@8WM))vrDCJ`@rPXCWD6`Lk?LY+lda`coGgQcL4AU}H|tz{&f*%-;O>HJ~v1R<#xq z>zkpOqx$*$Uw8I?7v1{%`nG%V+Mlbhf-TKN-{&fk8G%B?&7$#{Xf z)BNy%lX>>r{C;GATk`PL|JP^5n4fxYw;R+1;;1#_{A<{;`8#Lr15YRUh3C~4+OrjY z+b3A}{igDZ_6zPWHhaG4cU-X7{{^$Z5TvI0*9op^^dU9PC3|p9^TqYWXWtWn$>zrt zF6=nP=UCrjcOP8i@qnweFYYfsgDb>i3YT^q`sXkoE)A{_zj(r>uUMRZ2Woypb%U$Z zFWxUcw=YOO>(}GFrm$^q<37&Xe*&dzZgv)On4Q~Te!+aJMKXPjfY@Fur z@347uU`C6~{*CematqJLyU3L#_&D`R?Pg3C`sL!3A9t=UCaLd89B8a!BB-?`KYfAn zMsWkZh5jnvo;`hYT=hl7W?=)fh5l0?%daq}_oZEq0-c^6k#m#@7wZ(M~y%(OFT)ZKl z?xrO2`{|p8`y91?!o7bB)2?tF`)6UC(0$>#(8C-2=|}TjlH=!yZ)m^p+=%g}UHTEZ zM;rOiao+HLQ9QFFXTEU~KS-2C2Gm2CkTZSrLk`88dg;tEs$X{YF39OOeyCx1Q|&p^ z9K|m?r*6n;-~2!)@TS;v#yP6c9>)W&!k_!r8yD~$5Otb=oAbzFCcBenHy;J$}Q{v!HoAY!01?JEH{k86Ia2>!C1r~5(EX@0-Ze2{>NW0n5@F8-QX7oI<6dGWmRn2qCoh-{nP=v|7sr^#W-r?lq32-pUIfI;jjNZ z<_kg#&#!KIT{lnEc7|yYtK9{qh38+hyfHi9G4G7X9wzyWnHQFG#w%*4{eQOe!s?66 z5f7McLH*Y&|7NEjr?!`OnV$TYqEo|35t|pL>XXcUa$IcXpOx8LORf zhV7iw-?RT#Gvx^WGRd7*e|O%~=PgU8IYr%IRu=kIlK6x}?8lir$(#O1zg@1EJ0RU+ zcUR(V{9gCpl@I)03&eYUcAe#aX)nWK!CximEf!)w3gWoFE1hLNb1u=?_g)Rr|?D6jq{b*qFqbhGcla;d||xA-063(y)eT9w-?5HQXB4z zK7tJxESuu=x8uu91_oWh0UFyl{PTMKpLk2=YiqjlLRlCX7#KWV{an^LB{Ts5=;0v0 literal 0 HcmV?d00001