From 45056b4f8e6f3ca4579dd9a224b21fb576dc709b Mon Sep 17 00:00:00 2001 From: Skullheadx <94652084+Skullheadx@users.noreply.github.com> Date: Fri, 14 Apr 2023 13:01:42 -0400 Subject: [PATCH] Image rendering --- image.PNG | Bin 0 -> 41808 bytes image.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 9 +++++++++ 3 files changed, 57 insertions(+) create mode 100644 image.PNG create mode 100644 image.py diff --git a/image.PNG b/image.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5be42332045b9cb27850c39f2c431179728ec630 GIT binary patch literal 41808 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 I>zopr06oowvH$=8 literal 0 HcmV?d00001 diff --git a/image.py b/image.py new file mode 100644 index 0000000..55a4cb8 --- /dev/null +++ b/image.py @@ -0,0 +1,48 @@ +import pygame +from color import Color + + +class Image: + + def __init__(self, x, y, image_path, border_color=Color.BLACK, border_width=0): + self.x = x + self.y = y + self.image_path = image_path + self.image = pygame.image.load(self.image_path) + self.width = self.image.get_width() + self.height = self.image.get_height() + + self.border_color = border_color + self.border_width = border_width + + def get_width(self): + return self.width + + def get_height(self): + return self.height + + def set_position(self, x, y): + self.x = x + self.y = y + + def move(self, dx, dy): + self.x += dx + self.y += dy + + def set_image(self, image_path): + self.image_path = image_path + self.image = pygame.image.load(self.image_path) + self.width = self.image.get_width() + self.height = self.image.get_height() + + def set_border_color(self, border_color): + self.border_color = border_color + + def resize(self, width, height): + self.image = pygame.transform.scale(self.image, (width, height)) + self.width = width + self.height = height + + def draw(self, screen): + screen.blit(self.image, (self.x, self.y)) + pygame.draw.rect(screen, self.border_color, (self.x, self.y, self.width, self.height), self.border_width) diff --git a/main.py b/main.py index 28a6225..3ae413d 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,8 @@ from rectangle import Rectangle from text import Text, Label from button import Button from container import Container +from image import Image + pygame.init() @@ -22,6 +24,10 @@ e = Button(100, 300, "Quit", "Imprint Shadow", 40, Color.BLUE, Color.BLACK, Colo lambda: print("Goodbye World")) f = Container(400, 100, Color.WHITE, Color.BLACK, 1, 15, 20, 50, True, [d, e]) f.add_child(a) + +g = Image(0, -400, "image.PNG", Color.BLACK, 1) +g.resize(600, 400) + is_running = True while is_running: for event in pygame.event.get(): @@ -46,6 +52,9 @@ while is_running: f.move(delta * -10, 0) f.draw(screen) + g.move(0, delta * 50) + g.draw(screen) + pygame.display.update() delta = clock.tick(60) / 1000 # Seconds since last frame -- 2.54.0