Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пара вопросов по Дэльфи 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 если не ошибаюсь


Наверх

Титульная страница Поиск, карта сайта Написать письмо