Я пытаюсь добавить эффект размытия к создаваемому мной прозрачному виджету Tkinter.
Я сделал виджет частично прозрачным с помощью этой строки (фрагмент)
self.attributes("-alpha", 0.85)
Чтобы добавить желаемый эффект, мне нужно получить значения RGB для каждого отдельного пикселя в виджете. Поскольку виджет частично непрозрачен, я не могу использовать метод .cget, потому что он возвращает значение RGB для заполнения (цвет до того, как он стал частично прозрачным), а не фактическое значение RGB).
В настоящее время я использую эту функцию (фрагмент)
def get_pixel_colour(self, i_x, i_y):
i_desktop_window_id = win32gui.GetDesktopWindow()
i_desktop_window_dc = win32gui.GetWindowDC(i_desktop_window_id)
long_colour = win32gui.GetPixel(i_desktop_window_dc, i_x, i_y)
i_colour = int(long_colour)
return (i_colour & 0xff), ((i_colour >> 8) & 0xff), ((i_colour >> 16) & 0xff)
Однако для моих целей это слишком слишком медленно. Есть ли более быстрый способ получить цвет пикселей?
Изменить:
Если Python слишком медленный для этой цели, я также могу использовать C ++. Мне просто нужно получить значения RGB пикселей в разных координатах x, y.
get_pixel_color
функция в любом случае - плохая идея. - person Matti Virkkunen   schedule 29.01.2011