Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2011, 12:30   #1
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию прозрачный image

Всем доброго времени суток!
Надо сделать прозрачным image.
прозрачным делаю так

Код:
...
var
Form1: TForm1;
  mas:array[1..106] of integer;
...
procedure TForm1.Timer1Timer(Sender: TObject);
var
bmp:Tbitmap;
n:integer;
Drect,srect:TRect;
begin
for n:=104 downto 1 do begin
mas[n+1]:=mas[n];
end;
mas[1]:=random(105);
//paintbox1.Repaint;


image1.Picture:=nil;
begin
bmp:=Tbitmap.Create;
bmp.Width:=105;
bmp.Height:=105;
 srect:=Bounds(Image1.left,Image1.top,Image1.Width,Image1.Height);
  drect:=Bounds(0,0,Image1.Width,Image1.Height);
BMP.Canvas.CopyRect(Drect, Form1.Canvas, srect);
 for n:=1 to 105 do begin
bmp.Canvas.MoveTo(n,0);
 bmp.Canvas.LineTo(n,mas[n]);
 end;
 bmp.Transparent:=true;
 bmp.TransparentColor:=clwhite;
 Image1.Canvas.CopyRect(Image1.Canvas.ClipRect,bmp.Canvas,Image1.Canvas.ClipRect);
 freeandnil(bmp);
 end;
end;
но получается только то что просто заливается фон черным цветом и все.
Как сделать что-бы image был прозрачным и без мерцания?
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 03.04.2011, 13:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Если я правильно понял, то каждій раз по таймеру картинка пересоздаётся? При таком подходе мерцать будет. Прозрачность и цвет её вы задаёте для bmp, а зачем? Canvas.CopyRect эти свойства не переносит на Image. Там нужно эти свойства задать. Исходя из кода я и не очень понял, а будут ли вообще на картинке точки с цветом clwhite.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.04.2011, 14:11   #3
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Если я правильно понял, то каждій раз по таймеру картинка пересоздаётся?
это да
Цитата:
Canvas.CopyRect эти свойства не переносит на Image.
это и так понятно Canvas не может содержать свойство Transparent
Цитата:
а будут ли вообще на картинке точки с цветом clwhite.
будут могу скинуть exe

P.S. Canvas.CopyRect я использую потому что это быстрый способ отрисовки картинки
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 03.04.2011, 14:20   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а у вас картинка что меняется?
Цитата:
P.S. Canvas.CopyRect я использую потому что это быстрый способ отрисовки картинки
нет.

не пересоздавайте битмап по тысяче раз.

тем более что вы вообще в таймере глупость делаете.(берете то что уже нарисовано, и рисуете еще раз)

имейдж сам себя рисует, и если его не переросовывать насильно, мерцать не будет.

зачем вы делаете то что он итак делает?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.04.2011, 14:31   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

dmitriegorovih по-моему хочет что-то похожее на аннимацию таким способом сделать.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.04.2011, 14:39   #6
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
нет.

не пересоздавайте битмап по тысяче раз.

тем более что вы вообще в таймере глупость делаете.(берете то что уже нарисовано, и рисуете еще раз)

имейдж сам себя рисует, и если его не переросовывать насильно, мерцать не будет.

зачем вы делаете то что он итак делает?
Вы предлагаете на прямую рисовать то есть image.canvas.lineto(x,y)?


Цитата:
dmitriegorovih по-моему хочет что-то похожее на аннимацию таким способом сделать.
вообще отображение графика
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 03.04.2011, 14:49   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у вас график постоянно меняется?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.04.2011, 15:04   #8
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
у вас график постоянно меняется?
да раз в 100 милисекунд
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 03.04.2011, 15:23   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тогда просто перерисовывайте bitmap имейджа, он сам отобразит.
попробуйте поигратся с BeginPaint(или Draw) имейджа, если есть
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.04.2011, 16:53   #10
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
тогда просто перерисовывайте bitmap имейджа, он сам отобразит.
нету прозрачности
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EPNGMissingMultipleIDAT. This PNG Image is invalid because it has missing image parts kardinal94 Общие вопросы Delphi 0 08.10.2010 20:31
Рисуем на image. Прозрачный фон. TwiX Общие вопросы Delphi 8 02.10.2009 19:22
Прозрачный ImageBox TaTT DoGG Общие вопросы .NET 0 12.08.2009 17:21
Вопрос по Image (скачанная картинка не хочет выводиться в Image) Radnor Мультимедиа в Delphi 2 06.07.2009 02:20
прозрачный Image Roof Помощь студентам 8 27.07.2007 12:15