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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2015, 18:34   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Компонент TImage

Как на компоненте TImage разместить изображение с указанием начальной позиции (x,y) отрисовки ?
То есть, что бы верхний левый угол загружаемого изображения отображался в указанных координатах.

Есть вариант выводить по пикселям, но это критично по времени.
Так же есть вариант подготовить изображение в оперативной памяти (по пикселям выводить изображение в переменной TPicture), а потом готовое изображение подгрузить в компонент; это быстрее первого варианта, но всё равно из-за работы с пикселями время загрузки изображения критично.

Критично, потому что на одном TImage должно будет выводится порядка 100 маленьких изображений с позиционированием.

P. S. Вопрос выделен жирным.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 04.04.2015, 18:53   #2
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Код:
unit Unit5;

interface

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

type
  TForm5 = class(TForm)
  private
    { Private declarations }
  public
     procedure Draw_a_picture30(var background: String
                                 ; imagename1: String; X_bitmap1, Y_bitmap1: Integer
                                 ; imagename2: String; X_bitmap2, Y_bitmap2: Integer
                                 ; imagename3: String; X_bitmap3, Y_bitmap3: Integer
                                 ; imagename4: String; X_bitmap4, Y_bitmap4: Integer
                                 ; imagename5: String; X_bitmap5, Y_bitmap5: Integer
                                 ; imagename6: String; X_bitmap6, Y_bitmap6: Integer
                                 ; imagename7: String; X_bitmap7, Y_bitmap7: Integer
                                 ; imagename8: String; X_bitmap8, Y_bitmap8: Integer
                                 ; imagename9: String; X_bitmap9, Y_bitmap9: Integer
                                 ; imagename10: String; X_bitmap10, Y_bitmap10: Integer

                                 ; imagename11: String; X_bitmap11, Y_bitmap11: Integer
                                 ; imagename12: String; X_bitmap12, Y_bitmap12: Integer
                                 ; imagename13: String; X_bitmap13, Y_bitmap13: Integer
                                 ; imagename14: String; X_bitmap14, Y_bitmap14: Integer
                                 ; imagename15: String; X_bitmap15, Y_bitmap15: Integer
                                 ; imagename16: String; X_bitmap16, Y_bitmap16: Integer
                                 ; imagename17: String; X_bitmap17, Y_bitmap17: Integer
                                 ; imagename18: String; X_bitmap18, Y_bitmap18: Integer
                                 ; imagename19: String; X_bitmap19, Y_bitmap19: Integer
                                 ; imagename20: String; X_bitmap20, Y_bitmap20: Integer

                                 ; imagename21: String; X_bitmap21, Y_bitmap21: Integer
                                 ; imagename22: String; X_bitmap22, Y_bitmap22: Integer
                                 ; imagename23: String; X_bitmap23, Y_bitmap23: Integer
                                 ; imagename24: String; X_bitmap24, Y_bitmap24: Integer
                                 ; imagename25: String; X_bitmap25, Y_bitmap25: Integer
                                 ; imagename26: String; X_bitmap26, Y_bitmap26: Integer
                                 ; imagename27: String; X_bitmap27, Y_bitmap27: Integer
                                 ; imagename28: String; X_bitmap28, Y_bitmap28: Integer
                                 ; imagename29: String; X_bitmap29, Y_bitmap29: Integer
                                 ; imagename30: String; X_bitmap30, Y_bitmap30: Integer);
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation
     uses Unit1, Unit4;

{$R *.dfm}

{ TForm5 }

procedure TForm5.Draw_a_picture30(var background: String;
  imagename1:  String; X_bitmap1,  Y_bitmap1:  Integer;
  imagename2:  String; X_bitmap2,  Y_bitmap2:  Integer;
  imagename3:  String; X_bitmap3,  Y_bitmap3:  Integer;
  imagename4:  String; X_bitmap4,  Y_bitmap4:  Integer;
  imagename5:  String; X_bitmap5,  Y_bitmap5:  Integer;
  imagename6:  String; X_bitmap6,  Y_bitmap6:  Integer;
   .......................................................
 
  imagename28: String; X_bitmap28, Y_bitmap28: Integer;
  imagename29: String; X_bitmap29, Y_bitmap29: Integer;
  imagename30: String; X_bitmap30, Y_bitmap30:  Integer);
begin
Back.LoadFromResourceName(HInstance,background);// Загрузка в BitMap выбранного графического файла
  Form4.Image1.canvas.Draw(0,0,Back); // Перенос изображения на канву формы
  // выведем рисунок
  bitmap.LoadFromResourceName(HInstance,imagename1);
  bitmap.Transparent:= True; //
  bitmap.TransParentColor:= bitmap.canvas.pixels[1,1];
  X_bitmap:= X_bitmap1  ;
  Y_bitmap:= Y_bitmap1 ;
  // выведем рисунок
  Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
  bitmap.LoadFromResourceName(HInstance,imagename2);
  bitmap.Transparent:= True;
  bitmap.TransParentColor:= bitmap.canvas.pixels[1,1];
  X_bitmap:= X_bitmap2;
  Y_bitmap:= Y_bitmap2;
  // выведем рисунок
  Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
  bitmap.LoadFromResourceName(HInstance,imagename3);
  bitmap.Transparent:= True;
  bitmap.TransParentColor:= bitmap.canvas.pixels[1,1];
  X_bitmap:=X_bitmap3 ;
  Y_bitmap:=Y_bitmap3;
  // выведем рисунок
  Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
.....................................................................
  Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
 end;

end.
Репутация: полный "0"

Последний раз редактировалось zvygin1964; 04.04.2015 в 19:00.
zvygin1964 вне форума Ответить с цитированием
Старый 05.04.2015, 07:33   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

дядьмиша, ну ты даёшь!
цитата от умных, взята отсюда.
Цитата:
Но бывает и так, что кто-то из начинающих Понимающих (вчерашний Новичок), думая, что этим он помогает Новичку (или же сам Понимающий, но уже от безысходности, в надежде, что Новичок разумно распорядится даруемой в его руки Божественной Силой), даёт ответ на вопрос "как же сделать Y". Ура! - кричит Новичок и убегает доделывать Страшного Монстра, при встрече с которым потом даже самым смелым Понимающим целый месяц снятся кошмары. Тёмные Силы празднуют победу в этот день. Душа Новичка обречена гореть в геенне огненной за грехи свои.
дядьмиш, убери говнокод с глаз долой! а то скопирует, ведь, кто-нибудь. это на твоей совести будет!!!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.04.2015, 16:16   #4
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Спасибо, но думаю, что этого было бы достаточно:
Цитата:
Сообщение от zvygin1964 Посмотреть сообщение
Код:
Form4.Image1.canvas.Draw(X_bitmap,Y_bitmap,bitmap);
min@y™: в принципе всё правильно сказано, но не все тупые, и не все новички.
Просто я давно на Delphi не писал, уже как года четыре. На сях сижу. В этот раз пришлось вернуться к Delphi по условию заказа.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 05.04.2015 в 16:19.
OmegaBerkut вне форума Ответить с цитированием
Старый 05.04.2015, 21:20   #5
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Ну, так "Понимающие" затаились как партизаны. Удалить Овен-код уже не могу. Покажете лучший вариант?
Потому и застрял в теме http://programmersforum.ru/showthrea...=267214&page=6 , что голова уже взрывается от количества картинок с соответствующими им координатами и формами. Результат мне нравится, но недоделку показывать не хочется.

Эй, народ! Кому целиком дать мою недоделку попялиться? Куда положить, она большая... пока 15 Мб. Будет гораздо больше.
Репутация: полный "0"

Последний раз редактировалось zvygin1964; 05.04.2015 в 21:23.
zvygin1964 вне форума Ответить с цитированием
Старый 09.04.2015, 16:10   #6
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от zvygin1964 Посмотреть сообщение
Ну, так "Понимающие" затаились как партизаны. Удалить Овен-код уже не могу. Покажете лучший вариант?
Потому и застрял в теме http://programmersforum.ru/showthrea...=267214&page=6 , что голова уже взрывается от количества картинок с соответствующими им координатами и формами. Результат мне нравится, но недоделку показывать не хочется.

Эй, народ! Кому целиком дать мою недоделку попялиться? Куда положить, она большая... пока 15 Мб. Будет гораздо больше.
Об чём речь ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 09.04.2015, 16:53   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Вот так:
Код:
var
  Bitmap: TBitmap;
  X, Y: Integer;
begin
  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile('picture.bmp');
  X := 100; Y := 200;
  Image1.Canvas.Draw(X, Y, Bitmap);
  Bitmap.Free;
end;

Последний раз редактировалось Arigato; 09.04.2015 в 18:04.
Arigato на форуме Ответить с цитированием
Старый 09.04.2015, 17:11   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Вот так:
ну эт ты зря! ща скопипастють, а через месяц стомильёнов вопросов типа «ой, утечка памяти, спасити-памагити!».
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.04.2015, 18:03   #9
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Утечки не будет, потому что память тут даже не выделяется. А вот ошибка, если скопипастить, будет. Это же только пример, дальше автор и сам запилит.

P.S. Так и быть, расширил пример до более рабочего состояния.
Arigato на форуме Ответить с цитированием
Старый 09.04.2015, 23:29   #10
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Попробую:
Код:
var          //на Form1
  Bitmap: TBitmap;
  X, Y: Integer;
  imagename26: String;
//...............
begin                     //на Form3
  Bitmap := TBitmap.Create;
  Bitmap.LoadFromResourceName(HInstance,imagename26);
  Bitmap.Transparent:= True;                            // А это лишнее?
  Bitmap.TransParentColor:= bitmap.canvas.pixels[1,1];  // А это лишнее?
  X := 100; Y := 200;
  Image1.Canvas.Draw(X, Y, Bitmap);
end;
//...............
begin                 //на последней форме (пока только Form4)
  Bitmap.Free;
end;
, где Bitmap, X, Y, imagename26 - глобальные переменные объявленные даже не в этой Form3, а в какой-то Form1 .
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент потомок TImage DarkPrinceSSa Помощь студентам 0 18.04.2012 14:48
Компонент Timage Xeon332 Общие вопросы Delphi 8 04.02.2009 19:11
Компонент TImage Devoto Мультимедиа в Delphi 1 17.12.2008 16:13
Как убрать/уничтожить с формы компонент TImage? ZhekON Общие вопросы Delphi 11 11.03.2008 17:28