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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2013, 13:53   #1
Downloads
Пользователь
 
Аватар для Downloads
 
Регистрация: 25.06.2012
Сообщений: 39
По умолчанию Картинка в RichView как в qip

как вариант, хотя мне кажется можно и лучше!

Код:
  public
    sourse_map: TBitmap;
    procedure paint_thumbnail;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 sourse_map.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  jpeg_map: TJpegImage;
begin
  jpeg_map := TJpegImage.Create;
  jpeg_map.LoadFromFile('img2.jpg');
  sourse_map := TBitmap.Create;
  sourse_map.Width := jpeg_map.Width;
  sourse_map.Height := jpeg_map.Height;
  sourse_map.Assign(jpeg_map);
  jpeg_map.Free;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  paint_thumbnail;
end;

procedure TForm1.paint_thumbnail;
var
  map: TBitmap;
  x1, y1, x2, y2: Integer;
  fact1, fact2: Real;
begin
  map := TBitmap.Create;
  // размеры исходного изображения
  x1 := sourse_map.Width;
  y1 := sourse_map.Height;
  //размеры области, в которую помещается изображение
  x2 := Image1.ClientWidth;
  y2 := Image1.ClientHeight;
  // вычисляем отношение размеров
  fact1 := x2 / x1;
  fact2 := y2 / y1;
  // берём наименьший коэффициент, чтобы на него домножить размеры исходного изображения
  If fact2 < fact1 then
    fact1 := fact2;
  // а дальше уже отображение
  Image1.Canvas.Brush.Color := clGray;
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
  // если картинка больше заданной области, то сжимаем её
  If fact1 < 1.0 then
    begin
      map.Width := Round(x1 * fact1);
      map.Height := Round(y1 * fact1);
      map.Canvas.StretchDraw(map.Canvas.ClipRect, sourse_map);
    end
  else // иначе - оставляем такой, какая она есть (чтобы не расширять)
    map.Assign(sourse_map);
  // отображаем:
  Image1.Canvas.Draw((Image1.ClientWidth - map.Width) div 2,
      (Image1.ClientHeight - map.Height) div 2, map);
  map.Free;
end;
Изображения
Тип файла: jpg 2013-17-07 12.20.04.jpg (19.2 Кб, 111 просмотров)
Downloads вне форума Ответить с цитированием
Старый 18.07.2013, 14:11   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

тему зачем создал?
Человек_Борща вне форума Ответить с цитированием
Старый 18.07.2013, 15:12   #3
IvaniuS
Форумчанин
 
Аватар для IvaniuS
 
Регистрация: 16.04.2007
Сообщений: 225
По умолчанию

что значит зачем, человек желает поделится своим кодингом + какбы намекает что, если есть другие варианты получше - то вперед, посоревнуемся
IvaniuS вне форума Ответить с цитированием
Старый 19.07.2013, 09:48   #4
Downloads
Пользователь
 
Аватар для Downloads
 
Регистрация: 25.06.2012
Сообщений: 39
По умолчанию

хотелось бы узнать, как это сделать лучше и без серых полосок. чтобы выравнивался не в Timage и в bmp сразу же.
ну или хотябы в Timage только вот чтобы, без серых полос.
Downloads вне форума Ответить с цитированием
Старый 19.07.2013, 12:20   #5
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

На самом деле приведенное в первом посте решение -- быдлокод, тупо выводящий пятно картинки поверх поля текста, не учитывая сам текст, не обеспечивая обтекания и прочего.

Штатный способ -- выводить картинку средствами самого RichEdit, как описано в темах на StackOverflow -- раз и два.
Vapaamies вне форума Ответить с цитированием
Старый 19.07.2013, 16:02   #6
Downloads
Пользователь
 
Аватар для Downloads
 
Регистрация: 25.06.2012
Сообщений: 39
По умолчанию

Vapaamies, надеюсь вас не затруднит вывести пример?
я не понял.. честно говоря.
Downloads вне форума Ответить с цитированием
Старый 21.07.2013, 20:56   #7
Downloads
Пользователь
 
Аватар для Downloads
 
Регистрация: 25.06.2012
Сообщений: 39
По умолчанию

неужели мне никто не поможет?
Downloads вне форума Ответить с цитированием
Старый 22.07.2013, 21:58   #8
Downloads
Пользователь
 
Аватар для Downloads
 
Регистрация: 25.06.2012
Сообщений: 39
По умолчанию

ну хоть кто нибудь. выручайте!
Downloads вне форума Ответить с цитированием
Старый 24.07.2013, 00:41   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Первая ссылка, первый же ответ. Там четко расписано как можно объект вставить.
Да и сам RTF документ умеет содержать картинки, наверняка и отображать тоже.

В MS Word'е создайте RTF с картинкой и откройте в своем RichEdit'е.
Или же пишите наследник от TCustomRichEdit и дописывайте получение картинки и её отрисовку.
Человек_Борща вне форума Ответить с цитированием
Старый 25.07.2013, 12:04   #10
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

В RichView можно вставить картику через AddBulletEx или InsertPicture
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как реальзовать меню такое же как и в qip и не только. KWNlnc Общие вопросы Delphi 10 22.05.2010 00:39
Настройки как в QIP KoBRaAndrey Общие вопросы Delphi 7 12.03.2010 19:16
Окно как в qip Fezilk Общие вопросы Delphi 8 19.01.2010 12:07
Настройки как в QiP IceMage Общие вопросы Delphi 7 26.12.2009 21:30
Как восстановить QIP Умелец Свободное общение 8 15.07.2008 12:46