Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перерисовка компонента :( 
V
    Опции темы
tol
Дата 27.5.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



никак ненайду решения одного явления. 

Нужно создать канву для отрисовки изображений переменного 
размера. Беру ScrollBox кладу на него Image, свойство 
Image.Align := alClient 
Теперь если перед тем как что-либо нарисовать на канве 
сначала её увеличить то при прокрутке ScrollBox канва видна вовсём 
своём размере. А если перед увеличением размера что-либо нарисовать и потом увеличить Image то при прокрутке ScrollBox 
видна только часть Image которая вписывалась в размер ScrollBox. 
Какой метод применить что-бы избавиться от этого бага  

Для более ясного представления привожу пример -  smile 

Код

unit Unit1; 

interface 

uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs, ExtCtrls, StdCtrls; 

type 
TForm1 = class(TForm) 
ScrollBox1: TScrollBox; 
Image1: TImage; 
Button1: TButton; 
Button2: TButton; 
Button3: TButton; 
procedure Button1Click(Sender: TObject); 
procedure Button2Click(Sender: TObject); 
procedure Button3Click(Sender: TObject); 
private 
{ Private declarations } 
public 
{ Public declarations } 
end; 

var 
Form1: TForm1; 

implementation 

{$R *.dfm} 

//если использовать эту процедуру первой то никаких проблем нет 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
Image1.Width := 300; 
end; 

//а если перед увеличением размера использовать эти процедуры 
//то при прокрутке видна только часть канвы 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
Image1.Canvas.MoveTo(0,50); 
Image1.Canvas.LineTo(300,50); 
Image1.Canvas.MoveTo(100,0); 
Image1.Canvas.LineTo(100,132); 
end; 

procedure TForm1.Button3Click(Sender: TObject); 
begin 
Image1.Canvas.MoveTo(50,0); 
Image1.Canvas.LineTo(40,132); 
end; 

end.
 smile   
PM MAIL   Вверх
Mechanic
Дата 27.5.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: нет
Всего: 7



SetBounds  ? 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
tol
Дата 27.5.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Ни какой реакции метод SetBounds не дал smile 

я пробовал добавлять Image1.SetBounds() всё работает как
раньше. То-есть если на канве что-либо нарисовать до увеличения
размера (это когда полосы прокрутки в ScrollBox не проявляются) то при
увеличении длинны Image в  ScrollBox появляются полосы прокрутки, когда
пытаюсь посмотреть скрытую часть канвы то вижу вместо рисунка линии
пустое место smile 
 
PM MAIL   Вверх
Mechanic
Дата 27.5.2006, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: нет
Всего: 7



Извини, не дописал. Нужно делать SetBounds() с максимальными размерами.
См. DRKB ("Если отображается только часть TImage"). 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
Snowy
Дата 27.5.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Цитата(tol @  27.5.2006,  16:41 Найти цитируемый пост)
Image.Align := alClient 
Зачем, если ты собираешься устанавливать размеры вручную? 
PM MAIL   Вверх
tol
Дата 27.5.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



конечно можно заранее установить максимальные размеры Image
и непариться,  я этот вариант держу в запасе, тем-немение сам
эфект непонятен почему в одном варианте компонент нормально
отображается , а в другом ненормально . Я пробовал и методы
refresh,repaint,update ничего неполучается smile

Добавлено @ 18:40 
Snowy-- Image.Align := alClient 
 Зачем, если ты собираешься устанавливать размеры вручную? 

Я и этот вариант прорабатывал  smile  , и при  Image.Align := alNone
баг не исчезает 
PM MAIL   Вверх
Демо
Дата 27.5.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: нет
Всего: 50



Цитата(tol @  27.5.2006,  18:32 Найти цитируемый пост)
баг не исчезает 


Не баг, а проблема ;) 


--------------------
    
PM MAIL ICQ Skype   Вверх
Mechanic
  Дата 28.5.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: нет
Всего: 7



Что я делаю не так?  smile 

 

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  ImageSetBounds.zip 2,24 Kb
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
tol
Дата 28.5.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Всё так smile 
Спасибо за пример smile  сейчас вижу решение - с увеличением Image канву так-же 
надо увеличивать пропорционально компоненту. smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.