![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Смешать два цвета с использованием коэффициента прозрачностиDelphi , Графика и Игры , Цвета и ПалитраСмешать два цвета с использованием коэффициента прозрачности
Оформил: DeeCo // This function mixes two bytes According to value of TRANS // The value of TRANS is between 0 (result then will be equal to FG) // and 255 (result then will be equal to BG) function MixBytes(FG, BG, TRANS: byte): byte; asm push bx // push some regs push cx push dx mov DH,TRANS // remembering Transparency value (or Opacity - as you like) mov BL,FG // filling registers with our values mov AL,DH // BL = ForeGround (FG) mov CL,BG // CL = BackGround (BG) xor AH,AH // Clear High-order parts of regs xor BH,BH xor CH,CH mul BL // AL=AL*BL mov BX,AX // BX=AX xor AH,AH mov AL,DH xor AL,$FF // AX=(255-TRANS) mul CL // AL=AL*CL add AX,BX // AX=AX+BX shr AX,8 // Fine! Here we have mixed value in AL pop dx // Hm... No rubbish after us, ok? pop cx pop bx // Bye, dear Assembler - we go home to Delphi! end; // Here we mix R,G and B channels of our colors separately. // The value of T is between 0 and 255 as described above. // As you know, TColor value is 4 bytes length integer value where // low byte is red channel, 2nd byte is green and 3rd byte is blue function MixColors(FG, BG: TColor; T: byte): TColor; var r,g,b:byte; begin R := MixBytes(FG and 255,BG and 255,T); // extracting and mixing Red G := MixBytes((FG shr 8) and 255,(BG shr 8) and 255,T); // the same with green B := MixBytes((FG shr 16) and 255,(BG shr 16) and 255,T); // and blue, of course Result := r+g*256+b*65536; // finishing with combining all channels together end; Перевод контента на русский язык: Данное решение - это программный код на языке Delphi для смешивания двух цветов с прозрачностью. Функция Функция Рассмотрим как работает код:
Код предполагает, что входные цвета представляют собой значения типа Этот код можно использовать для создания эффектов смешивания цветов с различными степенями прозрачности. Например, вы можете использовать его для.fade one color into another или для blend two colors together while maintaining some level of transparency. Альтернативное решение может заключаться в реализации аналогичного эффекта с помощью встроенных функций и операторов Delphi, таких как арифметические операции Смешение двух цветов с использованием коэффициента прозрачности позволяет создавать различные оттенки и комбинации цветов, что используется в различных приложениях, включая дизайн и программирование. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Цвета и Палитра ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |