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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция копирования изображения 
:(
    Опции темы
Gigabyte
Дата 21.2.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


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

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



я пишу программу в которой нужно будет копирывать изображение в нужную точку исключая некий цвет
при этом это изображение нужно часто перерисовывать
я использовал следующий код

Код

procedure copyimage(var inbitmap:tbitmap;foncolor:string;xpos,ypos:integer);
var x,y:integer;
begin
 for x:=1 to inbitmap.Width-1 do
 begin
  for y:=1 to inbitmap.Height-1 do
  begin
  if inbitmap.Canvas.Pixels[x,y]<>stringtocolor(foncolor) then form1.Canvas.Pixels[x+xpos,y+ypos]:=inbitmap.Canvas.Pixels[x,y];
  end;
 end;
end;


но изображение сильно мерцает(рисунок не маленький)
может кто подскажет как сделать так что бы изображение не мерцало?????

Это сообщение отредактировал(а) Gigabyte - 21.2.2006, 19:26


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
Ozzя
Дата 21.2.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Зачем через pixels? Код нижеприведенный легко переделывается для копирования
Код

Как нарисовать Bitmap с прозрачностью 
     
  

procedure DrawTransparentBmp(Cnv: TCanvas; x,y: Integer; Bmp: TBitmap;  
                             clTransparent: TColor);  
var  
  bmpXOR, bmpAND, bmpINVAND, bmpTarget: TBitmap;  
  oldcol: Longint;  
begin  
  try  
    bmpAND := TBitmap.Create;  
    bmpAND.Width := Bmp.Width;  
    bmpAND.Height := Bmp.Height;  
    bmpAND.Monochrome := True;  
    oldcol := SetBkColor(Bmp.Canvas.Handle, ColorToRGB(clTransparent));  
    BitBlt(bmpAND.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height, Bmp.Canvas.Handle,  
           0,0, SRCCOPY);  
    SetBkColor(Bmp.Canvas.Handle, oldcol);  

    bmpINVAND := TBitmap.Create;  
    bmpINVAND.Width := Bmp.Width;  
    bmpINVAND.Height := Bmp.Height;  
    bmpINVAND.Monochrome := True;  
    BitBlt(bmpINVAND.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height,  
           bmpAND.Canvas.Handle, 0,0, NOTSRCCOPY);  

    bmpXOR := TBitmap.Create;  
    bmpXOR.Width := Bmp.Width;  
    bmpXOR.Height := Bmp.Height;  
    BitBlt(bmpXOR.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height, Bmp.Canvas.Handle,  
           0,0, SRCCOPY);  
    BitBlt(bmpXOR.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height,  
           bmpINVAND.Canvas.Handle, 0,0, SRCAND);  

    bmpTarget := TBitmap.Create;  
    bmpTarget.Width := Bmp.Width;  
    bmpTarget.Height := Bmp.Height;  
    BitBlt(bmpTarget.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height, Cnv.Handle, x,y,  
           SRCCOPY);  
    BitBlt(bmpTarget.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height,  
           bmpAND.Canvas.Handle, 0,0, SRCAND);  
    BitBlt(bmpTarget.Canvas.Handle, 0,0,Bmp.Width,Bmp.Height,  
           bmpXOR.Canvas.Handle, 0,0, SRCINVERT);  
    BitBlt(Cnv.Handle, x,y,Bmp.Width,Bmp.Height, bmpTarget.Canvas.Handle, 0,0,  
           SRCCOPY);  
  finally  
    bmpXOR.Free;  
    bmpAND.Free;  
    bmpINVAND.Free;  
    bmpTarget.Free;  
  end;  
end; 
Взято из http://forum.sources.ru 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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