![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Делаем часть изображения прозрачной в Delphi под Android: альтернатива Control.MakeScreenShotDelphi , Графика и Игры , OpenGLВ статье мы рассмотрим, как сделать часть изображения прозрачной в Delphi под Android, альтернативу методу Control.MakeScreenShot. Мы столкнемся с проблемой, когда нам нужно сделать прозрачным определенный участок битмапа, например, закругленный угол, как на приведенном ниже рисунке: Битмап генерируется с помощью Control.MakeScreenShot. Попытка заменить все пиксели верхнего левого угла на прозрачные с помощью цикла была неэффективной, так как инструкция fScreenShot.Map(TMapAccess.ReadWrite, M) занимает слишком много времени (около 200 миллисекунд). После некоторых исследований мы нашли альтернативный способ сделать часть изображения прозрачной, используя свойство Canvas.blending. Однако, этот метод работал только для прямоугольных областей и не мог быть применен к нашему конкретному случаю. В итоге, мы нашли решение, которое кажется очень сложным для такой простой задачи. Вот как мы это сделали:
В этом коде мы используем CanvasHelper.FillTriangles для заполнения треугольников, которые образуют прозрачный участок. Мы рассчитываем вершины, цвета и индексы для этих треугольников в зависимости от угла, который мы хотим сделать прозрачным. Затем мы передаем эти данные в CanvasHelper.FillTriangles, чтобы заполнить треугольники прозрачным цветом. Хотя это решение кажется очень сложным, оно позволяет нам сделать часть изображения прозрачной в Delphi под Android, не используя Control.MakeScreenShot. В статье рассматривается решение задачи по созданию прозрачного участка на битмапе в Delphi под Android, альтернативное методу Control.MakeScreenShot. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |