Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает TransparentBlt, Помогите плиз!! 
:(
    Опции темы
Evrp1
Дата 13.4.2004, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 14.3.2004

Репутация: нет
Всего: нет



Народ помогите пожалуйста!!!
Кто что-нить знает о функции 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 по отношения к принтеру, буду очень признателен smile.gif
PM MAIL   Вверх
<Spawn>
Дата 14.4.2004, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Все прекрасно работает - данный код копирует рисунок из TImage на указаную поверхность, используя верхний левый пиксел картинки как прозрачный

Код
procedure TForm1.Button2Click(Sender: TObject);
begin
 if not TransparentBlt(Canvas.Handle, 100, 0, Image1.Picture.Bitmap.Width,
                   Image1.Picture.Bitmap.Height,
                   Image1.Picture.Bitmap.Canvas.Handle, 0, 0,
                   Image1.Picture.Bitmap.Width,
                   Image1.Picture.Bitmap.Height,
                   Image1.Canvas.Pixels[0, 0]) then
   ShowMessage(SysErrorMessage(GetLastError));
end;

Добавлено @ 12:25
Упс, не сразу дочитал вопрос)) Так на крайний случай сначала копируй на какой нить HDC, а потом его распечатай. Принтера нет, так что проверить не могу.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Evrp1
Дата 14.4.2004, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 14.3.2004

Репутация: нет
Всего: нет



С канвасом работает, а с принтером нет!!!!
т.е если я использую Canvas.Handle - то все ок
если пишу в первый входящий параметр TransparentBlt hDC (принтера)
ни фига не пашет ;((((
Добавлено @ 12:29
Цитата

Упс, не сразу дочитал вопрос)) Так на крайний случай сначала копируй на какой нить HDC, а потом его распечатай. Принтера нет, так что проверить не могу.

что значит копируй на какой-нить hDC а потом распечатай????
объясни плиз

Это сообщение отредактировал(а) Evrp1 - 14.4.2004, 12:34
PM MAIL   Вверх
<Spawn>
Дата 14.4.2004, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Например, у тебя есть какая то картинка. Копируй ее куда нить при помощи TransparentBlt, а затем ту область копируй на принетер обычной BItBlt. Ну это, конечно, как вариант, если ты не сможешь разобраться с TransparentBlt


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Evrp1
Дата 14.4.2004, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 14.3.2004

Репутация: нет
Всего: нет



Спасибо за совет!!!
одно удивительно - нигде ничего не написано про то, работет ли она с принтером
smile.gif))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.