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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2008, 17:15   #11
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Не надо посередине никаких имиджей, я в посте №4 написал как надо делать.
А вот это
Цитата:
Rusl92, а теперь попробуй задвинь окно за край экрана и высунь, или сверни и разверни. Или проведи сверху другим окном.
я написал, чтобы ты осознал ошибку, и вернулся все к тому же посту №4.

Чтобы линии не пропадали, нужно перерисовывать их по событию OnPaint формы, если конечно форма в этом месте чистая, и сверху нет панелей или еще чего.
Так как есть обработка перерисовки окна, не нужно линии закрашивать белым цветом для невидимости. Нужно вызвать Repaint, окно перерисуется, и по новой нарисуются только те линии, к-рые ведут туда, где стоит галочка.

Кидай проект, переделаем, не с нуля же писать.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.08.2008, 17:31   #12
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

это одна форма от моего проекта, помогите исправить, чтобы на имаге рисовались линии, а не так, чтобы он становился полностью белым! Заранее спасибо! я пытался загрузить, но происходила ошибка базы данных, пришлось на ifolder.ru загрузить, ссылка: http://ifolder.ru/7672816
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 11.08.2008, 18:08   #13
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

кто-нибудь поможет?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 11.08.2008, 19:03   #14
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Я не вникал как именно надо нарисовать эту линию....
Нарисовал горизонтальную по середине.

Код:
Ris.Canvas.Pen.Color := ClRed;
Ris.Canvas.MoveTo(Ris.Width, Ris.Height Div 2);
Ris.Canvas.LineTo(0, Ris.Height Div 2);
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 12.08.2008, 14:08   #15
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

я уже сам разобрался, я поставил между компонентами имадже и рисовал на нем, вот еще одно решение, и этому имадже в свойстве Transparent =true!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 12.08.2008, 16:06   #16
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Rusl92, только без паники. У людей могут быть свои дела. Хоть ты и сам уже разобрался, покажу твои ошибки и приведу тот вариант о к-ром я говорил.

Сначала тот проект что ты выкладывал, с исправлением ошибок
Код:
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
   with  ris.Canvas  do begin
      Pen.Color:=clRed;
      MoveTo(0, ris.Height div 2);   // центр Image2
      {здесь было обращение к высоте формы, а не имиджа, у канвы нет свойства Height}
      LineTo(ris.Width-1, ChecklistBox1.ItemHeight*7 +ChecklistBox1.ItemHeight  div 2);
      {то же самое только к ширине}
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ris.Transparent:=true;
ris.Canvas.FillRect(ris.Canvas.ClipRect); //нужно закрасить канву белым
//иначе Transparent ничего не даст
end;
А это то, что тебе надо
(панели нет, на форме Image2 и CheckListBox2)
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Canvas.Pen.Color:=clRed;
  DoubleBuffered:=true;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  i: integer;
begin
with Canvas do
  with CheckListBox2 do
    for i:=0 to Items.Count-1 do
      if Checked[i] then
        begin
          MoveTo(Image2.Left+Image2.Width, Image2.Top + Image2.Height div 2);
          LineTo(Left, Top + i * ItemHeight + ItemHeight div 2);
        end;
end;

procedure TForm1.CheckListBox2ClickCheck(Sender: TObject);
begin
  with Canvas do
    with Sender as TCheckListBox do
      if Checked[ItemIndex] then
        begin
          MoveTo(Image2.Left+Image2.Width, Image2.Top + Image2.Height div 2);
          LineTo(Left, Top + ItemIndex * ItemHeight + ItemHeight div 2);
        end
      else
        Form1.Repaint;
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 15.08.2008, 11:57   #17
K@$K@
Пользователь
 
Аватар для K@$K@
 
Регистрация: 03.08.2007
Сообщений: 26
По умолчанию

Стандартный цвет закрашивания у канвы белый, честно не знаю как его поменять, можешь рисовать прямоугольник с нужным цветом.
K@$K@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование на Shape Stark[SG!] Мультимедиа в Delphi 8 09.06.2011 13:22
рисование на форме Kostua Помощь студентам 2 26.07.2008 16:24
Рисование... HunterMan Win Api 10 30.04.2008 23:46
Замедленное рисование Chepa Общие вопросы Delphi 5 01.02.2007 06:55