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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 00:12   #1
Iamloli
Пользователь
 
Аватар для Iamloli
 
Регистрация: 22.12.2009
Сообщений: 15
По умолчанию Изменить фон, не закрасив картинку.

Наверняка мой вопрос банален, но что поделать. У меня есть картинка (ну скажем деревцо с веточками во все стороны), и все это на голубом фоне. Я хочу сделать так, что б когда солнце с неба ушло, фон менялся на темно-синий.. но при этом, у меня закрашивает весь рисунок, если б это был просто треугольник, я б его нарисовал заново, и не парился, а тут так не получиться. Подскажите как такое сотворить? Пробовал floodfill, но чего-то не чего не меняется.
Iamloli вне форума Ответить с цитированием
Старый 20.01.2010, 00:16   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну возьмите и замените каждый голубой пиксель на синий...
mihali4 вне форума Ответить с цитированием
Старый 20.01.2010, 00:28   #3
Iamloli
Пользователь
 
Аватар для Iamloli
 
Регистрация: 22.12.2009
Сообщений: 15
По умолчанию

Хмм.. Вообще, спасибо за идею)) Но, это придется делать через цикл, и наверняка затормозит немного программу.. Конкретных функций для таких действий нету?)
Iamloli вне форума Ответить с цитированием
Старый 20.01.2010, 00:50   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Iamloli Посмотреть сообщение
наверняка затормозит немного программу
Насколько я понял, у вас процесс смены фона происходит не так уж и часто.
По функциям - смотрите хэлп, методы работы с пикселями.

Хотя проще взять "деревце" на прозрачном фоне и положить его поверх прямоугольника с фоном...
mihali4 вне форума Ответить с цитированием
Старый 20.01.2010, 01:15   #5
Iamloli
Пользователь
 
Аватар для Iamloli
 
Регистрация: 22.12.2009
Сообщений: 15
По умолчанию

Спасибо за советы, обязательно поищу функции с пикселями.
Iamloli вне форума Ответить с цитированием
Старый 20.01.2010, 01:24   #6
SoftKoc
Форумчанин
 
Аватар для SoftKoc
 
Регистрация: 07.11.2009
Сообщений: 218
По умолчанию

Если вы имеете в веду что-то похожее на заливку как в фотошопе или пайнте!!! Тогда

Код:
//Тут указываем цвет на который хотим заменить.
Form1.Canvas.Brush.Color:=clRed;

Form1.Canvas.FloodFill(100,100,clWhite,fsSurface);
//Пояснение.
Form1.Canvas.FloodFill( Координата Х, Координата У, Цвет который нужно заменить, fsSurface);
Простите насчет FloodFill. Не дочитал! =(
Я бы изменил мир, но Бог не дает исходников...
Если помог, нажми на весы и поставь плюс - в знак благодарности

Последний раз редактировалось SoftKoc; 20.01.2010 в 01:35.
SoftKoc вне форума Ответить с цитированием
Старый 20.01.2010, 01:27   #7
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

На чём это всё делается-то? В TImage.Canvas?
Попробуйте залить нужную область нужным цветом, а уже сверху рисовать дерево через Windows.TransparentBlt()...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 20.01.2010, 01:48   #8
Iamloli
Пользователь
 
Аватар для Iamloli
 
Регистрация: 22.12.2009
Сообщений: 15
По умолчанию

Цитата:
Простите насчет FloodFill. Не дочитал! =(
Та ладно, надо еще раз попробовать)
Хмм.. DomiNick, я такое наверняка пока не смогу делать, еще не шибко разобрался, но все равно спасибо)
И.. я накатал процедуру, но она чего-то не пашет.. и ошибка странная " Text after final 'END.' - ignored by compiler" (курсор высвечивает сразу после then).. Где он нашел конец, мне не известно))
Код:
procedure fon;
var y,x:integer;
begin
        with form1.canvas do
                for y:=1 to Form1.Height do
                        for x:=1 to Form1.Width do
                                if Pixels[x,y]:=Form1.Color then Pixels[x,y]:=clblue;
                                      //  end;
                             //   end;
                        end;
я его потом немного усовершенствую, но пока мне интересно.. что я не так написал))

Последний раз редактировалось mihali4; 20.01.2010 в 02:14.
Iamloli вне форума Ответить с цитированием
Старый 20.01.2010, 01:58   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
и ошибка странная " Text after final 'END.' - ignored by compiler"
Много лишних "end;"... Или что-то после закрывающего "end." написано...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 20.01.2010, 02:19   #10
Iamloli
Пользователь
 
Аватар для Iamloli
 
Регистрация: 22.12.2009
Сообщений: 15
По умолчанию

Без тех end, пишет "Declaration expected but end of file found".
Iamloli вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реестр - Необходимо изменить действие по умолчанию для .reg файлов(«Изменить» вместо «Объединить»). ACE Valery Windows 7 30.11.2010 23:33
Фон =Kroshka= Microsoft Office Word 2 23.07.2009 14:39
как изменить фон изображения до общего фона. CaSHA HTML и CSS 5 24.06.2009 11:43
как разместить картинку в фон на сайт? ILLUSION Помощь студентам 8 12.05.2009 22:04
фон beygul Общие вопросы Delphi 5 28.09.2008 11:28