| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Не работает TransparentBlt |
| Автор: Evrp1 13.4.2004, 23:57 |
| Народ помогите пожалуйста!!! Кто что-нить знает о функции TransparentBlt? она с принтером работает???? вот пример кода: TransparentBlt(hDC ,//cnvTarget.Handle, // handle to destination DC iBigAreaLeft, // x-coord of destination upper-left corner iBigAreaTop, // y-coord of destination upper-left corner iBigWidth, // width of destination rectangle iBigHeight, // height of destination rectangle imgTemp.Canvas.Handle, // handle to source DC 0, // x-coord of source upper-left corner 0, // y-coord of source upper-left corner imgTemp.Width, // width of source rectangle imgTemp.Height, // height of source rectangle clCream // color to make transparent ShowMessage(IntToStr(GetLastError())); hDC- это принтера hDC. Причем вот эта работает!!! : StretchBlt( hDC, //cnvTarget.Handle, // handle of destination device context iBigAreaLeft, // x-coord of destination upper-left corner iBigAreaTop, // y-coord of destination upper-left corner iBigWidth, // width of destination rectangle iBigHeight, // height of destination rectangle imgTemp.Canvas.Handle, // handle to source DC 0, // x-coord of source upper-left corner 0, // y-coord of source upper-left corner imgTemp.Width, // width of source rectangle imgTemp.Height, // height of source rectangle SRCCOPY // raster operation code ); пытаюсь на DC принтера использовать эту функцию (TransparentBlt) Она упорно возвращает false. Смотрю GetLastError, говорит, что код ошибки 87 - короче ей вроде не нравиться какой-то входящий параметр. Посидел подумал, что ей может не нравиться??? там же одни координаты + 2 hDC + цвет Координаты проверил, увет тоже - а ей хоть бы хны ;((( остаеться только DC . Самое интересное то, что на к примеру на канвасе TImage TransparentBlt работает прекрасно!!! Если кто знает как заменить TransparentBlt по отношения к принтеру, буду очень признателен |
| Автор: <Spawn> 14.4.2004, 12:23 | ||
Все прекрасно работает - данный код копирует рисунок из TImage на указаную поверхность, используя верхний левый пиксел картинки как прозрачный
Добавлено @ 12:25 Упс, не сразу дочитал вопрос)) Так на крайний случай сначала копируй на какой нить HDC, а потом его распечатай. Принтера нет, так что проверить не могу. |
| Автор: Evrp1 14.4.2004, 12:27 | ||
| С канвасом работает, а с принтером нет!!!! т.е если я использую Canvas.Handle - то все ок если пишу в первый входящий параметр TransparentBlt hDC (принтера) ни фига не пашет ;(((( Добавлено @ 12:29
что значит копируй на какой-нить hDC а потом распечатай???? объясни плиз |
| Автор: <Spawn> 14.4.2004, 12:35 |
| Например, у тебя есть какая то картинка. Копируй ее куда нить при помощи TransparentBlt, а затем ту область копируй на принетер обычной BItBlt. Ну это, конечно, как вариант, если ты не сможешь разобраться с TransparentBlt |
| Автор: Evrp1 14.4.2004, 12:48 |
| Спасибо за совет!!! одно удивительно - нигде ничего не написано про то, работет ли она с принтером |