Цитата:
Сообщение от YVitaliy
Точно не помню, но кажется делал так:
Код:
workcanvas.Pen.Mode:=pmMerge ;
workcanvas.Pen.Color:=clblue;
workcanvas.Brush.Color:=clblue;
//прямоугольник
|
Попробую.
Цитата:
Сообщение от angvelem
Изврат но: GetDiBits обеих картинок и смешивать байты в нужной пропорции.
|
Как уже писал, данная операция должна производиться быстро, поэтому варант с прямой работой с пикселами скорее всего не подойдет. Слишком долго. Думал в сторону GDI/GDI+, но еще не смотрел...
Цитата:
Сообщение от cotseec
а если создать небольшой битмап, как раз под расчитанный прямоугольник, копировать из PaintBox картинку этого прямоугольника, наложить полупрозрачный прямоугольник и вывести отдельным PaintBox'ом в нужном месте над оригинальным PaintBox' ом (чтобы не затирать оригинальную картинку)
|
Дело в том, что координаты прямоугольника вычисляются налету. Если нужный битмап создавать заранее, то он может оказаться очень большим, чего не хотелось бы, и так в памяти висит оригинальная картинка. Если битмап создавать в процессе работы при вызове отрисовки, то чем это лучше работы с пикселами? Те же тормоза будут - пока создашь (переразмеришь битмап), пока на нем отрисуешься, а потом опять уже его отрисовывать с альфа каналом.
Собственно, думал может кто знает как отрисовать просто прямоугольник с альфа каналом. Как видно из кода, пока просто рисуется фокусный прямоугольник, что не очень наглядно...