forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Полезные функции (http://forum.boolean.name/forumdisplay.php?f=17)
-   -   Прозрачный прямоугольник с краем (http://forum.boolean.name/showthread.php?t=20033)

polopok 10.10.2015 20:01

Прозрачный прямоугольник с краем
 
Прямоугольник с изменяемой прозрачностью в пределах от 0 до 255.
Так же есть возможность отрисовки полупрозрачного борта .
Код функции под спойлером :
Код:

;===============================================
;
;    Transparent Rect , alpha% = ( from 0 to 255 )

;
;===============================================

Function AlphaRect(Point_X# = 0 ,Point_Y# = 0 ,width ,height ,R = 255 ,G = 255 ,B = 255 ,A% = 255 ,border = False)

If A <= 0 And border = False
    Return
ElseIf (A <= 0 And border = True ) Or (A > 0 And border = False ) Or (A > 0 And border = True )

    Buffer = BackBuffer()
    LockBuffer Buffer
    RGB =  255 Shl 24 Or R Shl 16 Or G Shl 8 Or B ;
    For localY# = Point_Y To  Point_Y + height -1
    For localX# = Point_X To Point_X + width -1
        If localX > 0 And localX < GraphicsWidth() And localY > 0 And localY < GraphicsHeight()
        bgRGB = ReadPixelFast (localX ,localY ,Buffer )

        WritePixelFast localX ,localY , GetPixelForOpacity( bgRGB , RGB , A),Buffer
       
        If border
            NewRGB =(255-RGB *(A-((255-RGB )*(255-bgRGB  ) Shr 8)-A) Shr 8)
            WritePixelFast localX ,Point_Y , NewRGB ,Buffer
            WritePixelFast localX ,Point_Y+ height , NewRGB , Buffer
            WritePixelFast Point_X ,localY, NewRGB ,Buffer
            WritePixelFast Point_X + width ,localY, NewRGB , Buffer
        EndIf
        End If

    Next : Next
    UnlockBuffer Buffer
End If
End Function

Function GetPixelForOpacity( pixelBackground, pixelForeground, pixelAlpha)
    If pixelForeground = $ff000000 Then pixelForeground = pixelBackground
        bgsourceR = ((pixelForeground And $00FF0000) Shr 16);
        bgsourceG = ((pixelForeground And $0000FF00) Shr 8);
        bgsourceB = ((pixelForeground And $000000FF));

        sourceR = ((pixelBackground And $00FF0000) Shr 16);
        sourceG = ((pixelBackground And $0000FF00) Shr 8);
        sourceB = ((pixelBackground And $000000FF));

        newR = sourceR * pixelAlpha/255 + bgsourceR * ( 255-pixelAlpha)/255;
        newG = sourceG * pixelAlpha/255 + bgsourceG * (255- pixelAlpha)/255;
        newB = sourceB * pixelAlpha/255 + bgsourceB * (255- pixelAlpha)/255;

        Return (255 Shl 24 Or newR Shl 16 Or newG Shl 8 Or newB);
End Function



P.S. Думаю тут и без скриншота всё понятно .

SBJoker 11.10.2015 17:00

Ответ: Прозрачный прямоугольник с краем
 
Это конечно круто, но что мешает выводить так любую картинку?
Попиксельные операции дают полную свободу действий, однако производительность страдает, для того и есть фрагментные шейдеры.

polopok 11.10.2015 19:23

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от SBJoker (Сообщение 300432)
Это конечно круто, но что мешает выводить так любую картинку?
Попиксельные операции дают полную свободу действий, однако производительность страдает, для того и есть фрагментные шейдеры.

По поводу прозрачности картинки уже писал в этом http://forum.boolean.name/showthread.php?t=17431 посте.
Эффективность можно повысить если изображение загрузить в банк памяти и соответственно буфер представить банком памяти , остаётся лишь проход по значениям обоих банков с выводом результата в банк буфера

moka 12.10.2015 02:42

Ответ: Прозрачный прямоугольник с краем
 
Зачем?
Не лучше ли заняться реальной разработкой игр или приложений, исползуя современные и развитые платформы и библиотеки?
Зачем заниматься некро-кодингом?

polopok 12.10.2015 04:23

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от moka (Сообщение 300449)
Зачем?
Не лучше ли заняться реальной разработкой игр или приложений, исползуя современные и развитые платформы и библиотеки?
Зачем заниматься некро-кодингом?

:-)А никто ни кого ни к чему не принуждает ...
P.S.Каждый ***чит ,как ,где и чем хочет. :moil:

moka 13.10.2015 02:46

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от polopok (Сообщение 300451)
:-)А никто ни кого ни к чему не принуждает ...
P.S.Каждый ***чит ,как ,где и чем хочет. :moil:

При чем тут принуждение?
Вот, залайкавший L.D.M.T. некро-кодил, и за столько лет ничему не научился, даже примитивную html форму по работе не может сделать, готов заплатить другим.

Заачем?
Разве нету желания создавать что-то крутое и интересное, что люди смогут попробовать и использовать?

polopok 13.10.2015 03:19

Ответ: Прозрачный прямоугольник с краем
 
По моему переходим к трёпу :)
Для меня программирование просто хобби ,а блитз ностальгия ,хотя и сейчас думаю многие кодят на нём.

impersonalis 13.10.2015 11:36

Ответ: Прозрачный прямоугольник с краем
 
moka - ты сублимируешь латентную религиозность в кодовых холиварах. Надоел уже с этой темой хуже фанатиков. В каждом треде (хоть про цпп, хоть про б3д) вспыхивает один и тот же флейм, а ведь ворчание стариков опрокинуло blitz.pp в своё время. Ведёшь себя как член комиссии, выделяющей грант на мильон евро за вышеприведённый код. Тыжнормальный - лучше запили нам демку какую, или про эвент какой расскажи.

moka 13.10.2015 13:55

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от impersonalis (Сообщение 300496)
moka - ты сублимируешь латентную религиозность в кодовых холиварах. Надоел уже с этой темой хуже фанатиков. В каждом треде (хоть про цпп, хоть про б3д) вспыхивает один и тот же флейм, а ведь ворчание стариков опрокинуло blitz.pp в своё время. Ведёшь себя как член комиссии, выделяющей грант на мильон евро за вышеприведённый код. Тыжнормальный - лучше запили нам демку какую, или про эвент какой расскажи.

Ничего против CPP не имею. Язык может и работу дать, только если опять же, не манчкинством заниматься, а делом.

На демки времени нету совсем, работа-работа-рабство.
Евенты, когда пройдут, расскажу.

Причины по которым я негодую, это то что почти все кто тут сидит с давних времен, пересели с б3д на что-то более дельное, и чем раньше это сделали, тем лучше.
Посмотри на HolyDel, PAX, Mr_F, ARENSHI, да почти все наши старожилы на что-то дельное перешли, и все пробиваются, все двигаются вперед, получают свои деньги за свои творения, или хотя бы реальные проекты, с реальными пользователями.
А не код, который максимум 3 человека скопи-пастят, и больше никто не увидит. Хотя бы на JS'е писал тоже самое, так хоть побольше людей увидило, и может кому-то пригодилось бы, но и это сомнительно.

Разве никто не хочет чтобы его хобби стало работой, приносящей не только фан, но и бабло?

Arton 13.10.2015 14:03

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от moka (Сообщение 300503)
Причины по которым я негодую, это то что почти все кто тут сидит с давних времен, пересели с б3д на что-то более дельное, и чем раньше это сделали, тем лучше.
Посмотри на HolyDel, PAX, Mr_F, ARENSHI, да почти все наши старожилы на что-то дельное перешли, и все пробиваются, все двигаются вперед, получают свои деньги за свои творения, или хотя бы реальные проекты, с реальными пользователями.
А не код, который максимум 3 человека скопи-пастят, и больше никто не увидит. Хотя бы на JS'е писал тоже самое, так хоть побольше людей увидило, и может кому-то пригодилось бы, но и это сомнительно.

Разве никто не хочет чтобы его хобби стало работой, приносящей не только фан, но и бабло?

Интересно, что за таракан в твоей голове заставляет писать это.
Тебе важно что бы каждое действие имело конечную цель и обязательно полезную/продуктивную.
Пишешь что не надо навязывать мнение другим и сам отчаянно навязываешь своё.
Почему же ты так беспокоишься за других.


moka 13.10.2015 14:15

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от Arton (Сообщение 300505)

Интересно, что за таракан в твоей голове заставляет писать это.
Тебе важно что бы каждое действие имело конечную цель и обязательно полезную/продуктивную.
Пишешь что не надо навязывать мнение другим и сам отчаянно навязываешь.
Почему же ты так беспокоишься за других.


Картинка иллюстрирует твою сторону взгляда, т.к. тебе не ясна моя мотивация.
Мотивация простая, такая же как у любого другого человека который стремиться чего-то добиваться в жизни, и желает того же другим.
Я чему-то вроди научился, и начинал с б3д, много общего со многими на булке.
И выбравшись до какого-то уровня, вижу свои и чужие "ошибки", или скорее "погрехи", которые если увидеть чутка раньше, можно лучше и дальше уйти вперед в итоге.
Разве это не круто видеть как народ развивается, и достигает успехов? По мне так это отлично.
Я лично имею список людей, которые кто-то также начинал на булке, а кто-то еще где-то. Мне удалось в ранее время их немного направить, советом или объяснив там что-то по коду. И сейчас они весьма в хорошем положении. Я не приписываю себе ничего, т.к. каждая мелкая деталь важна, и в итоге - это они делают, не я за них. И когда видишь такой рост и развитие. Чертовски приятно, и радостно за людей.

Желаю просто всем чтобы двигались, и развивались. Всего-то.
Порой слышу отмазы, которые звучат для меня как "он тупой, и ему нравится быть тупым, оставь его в покое, не мешай ему тупить". От таких отмаз, мне становится грустно.

Думаю мотивация теперь ясна?

Arton 13.10.2015 14:57

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от moka (Сообщение 300507)
Картинка иллюстрирует твою сторону взгляда, т.к. тебе не ясна моя мотивация...

С чего ты это взял? Мне понятна твоя мотивация, хотя и не ясны причины, а вот ты меня похоже не понял, или не хочешь.
Когда человек действительно понимает (осознаёт), он перестаёт повторять одно и тоже.

Объяснять что-либо тебе я не собираюсь, вдруг обидишься ты сам в состояние разобраться.

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 500 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

P. S. Больше не отвечай пожалуйста, как правило ты стараешься оставить последнее слово за собой, и споры часто становятся бессмысленным словоблудием.

impersonalis 13.10.2015 15:01

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от moka (Сообщение 300507)
Желаю просто всем чтобы двигались, и развивались. Всего-то.
Порой слышу отмазы, которые звучат для меня как "он тупой, и ему нравится быть тупым, оставь его в покое, не мешай ему тупить". От таких отмаз, мне становится грустно.

Фанатики рассуждают точно также. Основная проблема - система ценностей: кто-то хочет поиграться с алгоритмами, кто-то заняться ненормальным программированием, кто-то тихонько ковыряется в свободное время (как хобби, которое не умерщвляется, став работой), кто-то изобретает велосипед, т.к. для него это лучший подход к пониманию материала и т.п.
Разумеется, стоит прокомментировать, на случай если человек действительно не понимает, что занят не совсем тем, на что рассчитывает (возможно, даже перенести тему из данного раздела в какие-нибудь "примеры кода"). Но не одним и тем же людям по n-ому разу.
Большинство фанатиков свято верят, что несут свет знаний тёмным дикарям. Тех, кто лишь прикрывается личной миссионера - не так много.

polopok 13.10.2015 15:16

Ответ: Прозрачный прямоугольник с краем
 
Мда ... Все ,вы ,правы и даже я .
moka , я очень признателен за попытки мотивировать меня ,так же рад тому ,что на этом голубом ,овалообразном шарике земли таки есть люди не равнодушные к другим человек'ам ,ведь одно понимание собственной необходимости повышает стремление к познанию и расширения мира.

moka 13.10.2015 16:49

Ответ: Прозрачный прямоугольник с краем
 
Цитата:

Сообщение от impersonalis (Сообщение 300511)
Фанатики рассуждают точно также. Основная проблема - система ценностей: кто-то хочет поиграться с алгоритмами, кто-то заняться ненормальным программированием, кто-то тихонько ковыряется в свободное время (как хобби, которое не умерщвляется, став работой), кто-то изобретает велосипед, т.к. для него это лучший подход к пониманию материала и т.п.
Разумеется, стоит прокомментировать, на случай если человек действительно не понимает, что занят не совсем тем, на что рассчитывает (возможно, даже перенести тему из данного раздела в какие-нибудь "примеры кода"). Но не одним и тем же людям по n-ому разу.
Большинство фанатиков свято верят, что несут свет знаний тёмным дикарям. Тех, кто лишь прикрывается личной миссионера - не так много.

Это все очевидные вещи, и мне известно то что ты здесь пишешь.
Я еще не подрос чтобы мириться с окружением, и принимать его как есть. У меня все еще подростковый максимализм где-то, частично остался. И желание "бежать" вперед есть. Время прийдет, и я угомонюсь. А пока, с осознанием того что ты и остальные пишут, я буду гнуть свою палку.

Вреда в моих текстах не вижу, и это важно. Тем более каждый имеет право не читать.

Arton, причины такие же как у любого ученого стремление к познанию, или ребенка попробовать все на вкус, любопытство и не усидчивость - причина которая ведет к мотивации описанной выше.
Я все же не удержался и ответил.


Часовой пояс GMT +4, время: 13:53.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot