![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пара вопросов по Дэльфи 7 [D7]
Анонимус © (2010-11-14 18:18:00)Добрый день. У меня есть два вопроса, которые для знатоков должны быть совсем не сложными.
1. Каким образом можно обновить Image? Если подробнее, то я попиксельно переношу из Image1 в Image2 картинку, например, с разрешением 100х100. Потом в Image1 загружаю картинку с разрешением 10х10 и также попиксельно переношу её в Image2. При этом, в Image2, помимо перенёсонной 10х10 картинки, там по прежнему виднеются остатки и той картинки, которая 100х100 и получается так, что маленькая картинка как будто бы накладывается на большую. Так вот, как этого избежать?
Пробовал искать в гугле, порылся по онлайн-учебникам — не нашёл. Пробовал наугад всякие Refresh, Repaint — тоже не помогает.
2. Как во время выполнения процедуры прервать выполнение этой самой процедуры? Т.е. у меня после нажатия некой кнопки идёт процедура, но в самом её начале проверяются некие условия. Так вот, как при невыполнении этих условий прервать дальнейшее выполнение процедуры?
Анонимус (2010-11-14 22:45:00) [1]
> Image2.Picture.Assign(Image1.Picture);
Ага, переносит. Спасибо.
> ну или сразу грузить в оба Image'са одну и туже картинку.
> ...
В принципе, можно. Но мне вариант v_a_belousov'а больше нравится.
{RASkov} (2010-11-14 21:06:00) [2]> [12] Анонимус (14.11.10 20:47)
procedure TForm1.Image1Click(Sender: TObject);
begin
with TOpenPictureDialog.Create(self) do try
if Execute then begin
Image1.Picture.LoadFromFile(FileName);
Image2.Picture.Assign(Image1.Picture);
end;
finally
Free;
end;
end;
> Потом в Image1 загружаю картинку с разрешением 10х10 и также
> попиксельно переношу её в Image2.
ну или сразу грузить в оба Image'са одну и туже картинку....
Анонимус (2010-11-14 20:47:00) [3]
> а зачем попиксельно?есть же Canvas.Draw
Что-то не получается через Canvas.Draw. Как правильно задавать надо?
Анонимус (2010-11-14 20:26:00) [4]
> есть же Canvas.Draw
Это скопирует всю картинку сразу?
> Прям в двойном цикле по Canvas.Pixels?
Да, именно в нём=)
> Если никаких сложный преобразований не ведется, то проще
> и быстрее копировать все сразу.
Как раз таки мне нужны значения яркости цветов каждого пикселя, т.к. с ними производятся некоторые манипуляции. Поэтому приходиться попиксельно.
> Правильно и [2] и [3], но [2] считается плохим стилем.
Да я вообще-то не об этом спрашивал, я спрашивал о том, по какой команде прекращает своё выполнение процедура. Этой командой оказалось слово exit=)
А сама проверка условия у меня выглядит так:
if условие1 and условие2 and условие3 then ...
v_a_belousov (2010-11-14 20:13:00) [5]
> Правильно и [2] и [3], но [2] считается плохим стилем.
исправлюсь
И. Павел (2010-11-14 20:07:00) [6]
> попиксельно переношу из Image1 в Image2 картинк
Прям в двойном цикле по Canvas.Pixels? Если никаких сложный преобразований не ведется, то проще и быстрее копировать все сразу.
Правильно и [2] и [3], но [2] считается плохим стилем.
clickmaker (2010-11-14 20:04:00) [7]> то я попиксельно переношу из Image1 в Image2 картинку
а зачем попиксельно?
есть же Canvas.Draw
Анонимус (2010-11-14 19:50:00) [8]
> И выбрал самый плохой вариант, ламерский.
Вот вместо того, чтобы делать вид, что ты умнее всех, лучше бы написал как сделать лучше.
v_a_belousov (2010-11-14 19:29:00) [9]
> if not условие then exit
Ну да или так)
> И выбрал самый плохой вариант, ламерский.
В смысле?
Anatoly Podgoretsky (2010-11-14 19:22:00) [10]И выбрал самый плохой вариант, ламерский.
Анонимус (2010-11-14 19:13:00) [11]v_a_belousov
Спасибо, помогло!
Andy BitOff (2010-11-14 19:07:00) [12]> v_a_belousov (14.11.10 18:59) [2]
> if условие<>true then exit
if not условие then exit
v_a_belousov (2010-11-14 18:59:00) [13]
> Т.е. у меня после нажатия некой кнопки идёт процедура, но
> в самом её начале проверяются некие условия. Так вот, как
> при невыполнении этих условий прервать дальнейшее выполнение
> процедуры?
>
//если условие не выполнено, то выходим
if условие<>true then exit
else
//если условие выполнено
то делай необходимые тебе операции
v_a_belousov (2010-11-14 18:56:00) [14]
> как этого избежать?
Перед переносом в Image2 надо его очистить Image2.Picture := nil если не ошибаюсь