更新uframebuf 移动方法问题

This commit is contained in:
dahanzimin
2025-05-29 18:24:30 +08:00
parent e63af64ee7
commit 2c4988b86c

View File

@@ -168,53 +168,26 @@ class FrameBuffer_Base(FrameBuffer):
def write(self): def write(self):
self.show() self.show()
def shift(self, x, y, rotate=False, sync=True): def shift(self, x, y, sync=True):
"""Shift pixels by x and y""" """Shift pixels by x and y"""
if x > 0: # Shift Right super().scroll(x, y)
for _ in range(x):
for row in range(0, self.height):
last_pixel = super().pixel(self.width - 1, row) if rotate else 0
for col in range(self.width - 1, 0, -1):
super().pixel(col, row, super().pixel(col - 1, row))
super().pixel(0, row, last_pixel)
elif x < 0: # Shift Left
for _ in range(-x):
for row in range(0, self.height):
last_pixel = super().pixel(0, row) if rotate else 0
for col in range(0, self.width - 1):
super().pixel(col, row, super().pixel(col + 1, row))
super().pixel(self.width - 1, row, last_pixel)
if y > 0: # Shift Up
for _ in range(y):
for col in range(0, self.width):
last_pixel = super().pixel(col, self.height - 1) if rotate else 0
for row in range(self.height - 1, 0, -1):
super().pixel(col, row, super().pixel(col, row - 1))
super().pixel(col, 0, last_pixel)
elif y < 0: # Shift Down
for _ in range(-y):
for col in range(0, self.width):
last_pixel = super().pixel(col, 0) if rotate else 0
for row in range(0, self.height - 1):
super().pixel(col, row, super().pixel(col, row + 1))
super().pixel(col, self.height - 1, last_pixel)
if sync: self.show() if sync: self.show()
def shift_right(self, num, rotate=False): def shift_right(self, num, sync=True):
"""Shift all pixels right""" """Shift all pixels right"""
self.shift(num, 0, rotate) self.shift(num, 0, sync)
def shift_left(self, num, rotate=False): def shift_left(self, num, sync=True):
"""Shift all pixels left""" """Shift all pixels left"""
self.shift(-num, 0, rotate) self.shift(-num, 0, sync)
def shift_up(self, num, rotate=False): def shift_up(self, num, sync=True):
"""Shift all pixels up""" """Shift all pixels up"""
self.shift(0, -num, rotate) self.shift(0, -num, sync)
def shift_down(self, num, rotate=False): def shift_down(self, num, sync=True):
"""Shift all pixels down""" """Shift all pixels down"""
self.shift(0, num, rotate) self.shift(0, num, sync)
def map_invert(self, own): def map_invert(self, own):
"""Graph invert operation""" """Graph invert operation"""