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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Необычная прорисовка картинки в Gride 
:(
    Опции темы
v00d00
Дата 8.7.2008, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте, возникла необходимость выводить в Grid'e картинки, но так как пока есть немного свободного времени, хотелось бы сделать это как-нибудь повеселее. Так вот как конечный результат, хочу получить нечто подобное:
user posted image

+ хочеться чтобы в ячейке отображалась масштабирована копия картинки.

С рисованием на канве всегда были проблемы, пока получилось вот что

Код

procedure TForm6.JvDBUltimGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState);
var
  SRect: TRect;
begin

if (DataCol=0) and F then
begin

  with  JvDBUltimGrid1.Canvas do
    begin
      pen.Color:=clHighlight;
      pen.Width:=3;
      Rectangle(rect);
      pen.Width:=1;
      Srect.Top:= JvDBUltimGrid1.Height div 2 - JvImage1.Height;
      Srect.Left:= 200;
      Srect.Right:= Srect.Left+ JvImage1.Width;
      srect.Bottom:= Srect.Top + JvImage1.Height;
      PenPos:=Rect.TopLeft;
      lineto( Srect.Top,Srect.left);
      PenPos:=Rect.BottomRight;
      lineto( Srect.Bottom,Srect.Right);
      PenPos:=Point(rect.Bottom,rect.left);
      lineto( Srect.Bottom,Srect.left);
      PenPos:=Point(rect.Top,rect.Right);
      lineto( srect.Top,srect.Right);
      pen.Width:=3;
      Rectangle(srect);
      pen.Width:=1;
      JvImageList1.Draw(Canvas,Srect.top,Srect.left,0);
{      CopyRect(
      Types.Rect(0,0,JvImage1.Height,JvImage1.Width),
      JvImage1.Canvas,
      Types.Rect(Srect.Top,Srect.Left,JvImage1.Height,JvImage1.Width)
      );   }

    end;

end;


Но ячейки, которые рисуются после моей, затирают картинку. Посоветуйте что-нибудь. Можно было бы поместить компонент для отображения картинки на форме и показывать выбранную картинку, но так надоело работать по шаблонам. 

Жду ваших предложений.

P.S. Картинки лежат на диске, в базе есть пути. Нужно как-то оптимизировать работу с диском, возможно загружать картинки в потоке в ImgList? Или еще как-нибудь?

Это сообщение отредактировал(а) v00d00 - 8.7.2008, 10:27
PM MAIL   Вверх
Frees
Дата 8.7.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(v00d00 @  8.7.2008,  10:23 Найти цитируемый пост)
P.S. Картинки лежат на диске, в базе есть пути. Нужно как-то оптимизировать работу с диском, возможно загружать картинки в потоке в ImgList? Или еще как-нибудь?

а почему бы не хранить сами файлы в базе


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Frees
Дата 8.7.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



я вот тут на крапал на досуге
v00d00,  ты это  имел в виду?

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  HintGrid.zip 2,03 Kb


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
v00d00
Дата 8.7.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да это действительно то, осталось научить его кушать JPG.))) Спасибо за столь оперативный ответ, и за то что уберегли от изобретения велосипеда)
Не хранить картинки в базе это прихоть заказчика. Как вы думаете, стоит ли пытаться оптимизировать считывание файлов с диска(например хранить считанные картинки в TMemoryStream), или пусть система сама кэширует доступ к файлам на диске?

PM MAIL   Вверх
Frees
Дата 9.7.2008, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



по пободу того что загружать а что нет лучше бы рисовать картинки которые в памяти а не грузить их в момент загрузки

в том случаи если файлы большие то может лучше хранить в памяти не весь файл а его маленькое привью

еще вот придумал если у тебя пути в базе а файлы на диске может сделать вычислимое поле которое будет содеражать привью файла
 
но это все ИМХО, может и не верно совсем.smile

Добавлено через 1 минуту и 22 секунды
Цитата(v00d00 @  8.7.2008,  15:30 Найти цитируемый пост)
 и за то что уберегли от изобретения велосипеда)

не факт что я не занимался его изобретением
по поводу рисовать картинку в ячейке то DBGridEh давно уже умеет


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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