Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.02.06;
Скачать: CL | DM;

Вниз

Пара вопросов по Дэльфи 7   Найти похожие ветки 

 
Анонимус   (2010-11-14 18:18) [0]

Добрый день.  У меня есть два вопроса, которые для знатоков должны быть совсем не сложными.

1. Каким образом можно обновить Image? Если подробнее, то я попиксельно переношу из Image1 в Image2 картинку, например, с разрешением 100х100. Потом в Image1 загружаю картинку с разрешением 10х10 и также попиксельно переношу её в Image2. При этом, в Image2, помимо перенёсонной 10х10 картинки, там по прежнему виднеются остатки и той картинки, которая 100х100 и получается так, что маленькая картинка как будто бы накладывается на большую. Так вот, как этого избежать?
Пробовал искать в гугле, порылся по онлайн-учебникам — не нашёл. Пробовал наугад всякие Refresh, Repaint — тоже не помогает.

2. Как во время выполнения процедуры прервать выполнение этой самой процедуры? Т.е. у меня после нажатия некой кнопки идёт процедура, но в самом её начале проверяются некие условия. Так вот, как при невыполнении этих условий прервать дальнейшее выполнение процедуры?


 
v_a_belousov   (2010-11-14 18:56) [1]


> как этого избежать?

Перед переносом в Image2 надо его очистить Image2.Picture := nil если не ошибаюсь


 
v_a_belousov   (2010-11-14 18:59) [2]


> Т.е. у меня после нажатия некой кнопки идёт процедура, но
> в самом её начале проверяются некие условия. Так вот, как
> при невыполнении этих условий прервать дальнейшее выполнение
> процедуры?
>

//если условие не выполнено, то выходим
if условие<>true then exit
else
//если условие выполнено
то делай необходимые тебе операции


 
Andy BitOff ©   (2010-11-14 19:07) [3]

> v_a_belousov   (14.11.10 18:59) [2]
> if условие<>true then exit

if not условие then exit


 
Анонимус   (2010-11-14 19:13) [4]

v_a_belousov
Спасибо, помогло!


 
Anatoly Podgoretsky ©   (2010-11-14 19:22) [5]

И выбрал самый плохой вариант, ламерский.


 
v_a_belousov   (2010-11-14 19:29) [6]


> if not условие then exit

Ну да или так)

> И выбрал самый плохой вариант, ламерский.

В смысле?


 
Анонимус   (2010-11-14 19:50) [7]


> И выбрал самый плохой вариант, ламерский.

Вот вместо того, чтобы делать вид, что ты умнее всех, лучше бы написал как сделать лучше.


 
clickmaker ©   (2010-11-14 20:04) [8]

> то я попиксельно переношу из Image1 в Image2 картинку

а зачем попиксельно?
есть же Canvas.Draw


 
И. Павел ©   (2010-11-14 20:07) [9]


> попиксельно переношу из Image1 в Image2 картинк

Прям в двойном цикле по Canvas.Pixels? Если никаких сложный преобразований не ведется, то проще и быстрее копировать все сразу.

Правильно и [2] и [3], но [2] считается плохим стилем.


 
v_a_belousov   (2010-11-14 20:13) [10]


> Правильно и [2] и [3], но [2] считается плохим стилем.

исправлюсь


 
Анонимус   (2010-11-14 20:26) [11]


> есть же Canvas.Draw

Это скопирует всю картинку сразу?


> Прям в двойном цикле по Canvas.Pixels?

Да, именно в нём=)


> Если никаких сложный преобразований не ведется, то проще
> и быстрее копировать все сразу.

Как раз таки мне нужны значения яркости цветов каждого пикселя, т.к. с ними производятся некоторые манипуляции. Поэтому приходиться попиксельно.


> Правильно и [2] и [3], но [2] считается плохим стилем.

Да я вообще-то не об этом спрашивал, я спрашивал о том, по какой команде прекращает своё выполнение процедура. Этой командой оказалось слово exit=)
А сама проверка условия у меня выглядит так:
if условие1 and условие2 and условие3 then ...


 
Анонимус   (2010-11-14 20:47) [12]


> а зачем попиксельно?есть же Canvas.Draw

Что-то не получается через Canvas.Draw. Как правильно задавать надо?


 
{RASkov} ©   (2010-11-14 21:06) [13]

> [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 22:45) [14]


> Image2.Picture.Assign(Image1.Picture);

Ага, переносит. Спасибо.


> ну или сразу грузить в оба Image"са одну и туже картинку.
> ...

В принципе, можно. Но мне вариант v_a_belousov"а больше нравится.



Страницы: 1 вся ветка

Текущий архив: 2011.02.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
6-1233828325
WebBrowser+ table
2009-02-05 13:05
2011.02.06
работа с таблицами


2-1289755463
Gu
2010-11-14 20:24
2011.02.06
Окно ожидания в отдельном потоке


15-1287606541
Юрий
2010-10-21 00:29
2011.02.06
С днем рождения ! 21 октября 2010 четверг


2-1289815798
cyber-pilot
2010-11-15 13:09
2011.02.06
Вопрос про WideChar


2-1290091924
NewZ
2010-11-18 17:52
2011.02.06
Компонент TScrollBox.