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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2024, 18:06   #1
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 114
Вопрос Delphi 7 : TImage Tile

Всем доброго времени суток!

Нужно "замостить" TImage маленьким изображением.

Код:
       bmpImage:=TBitmap.Create;
        Try
         bmpImage.LoadFromFile(...); //Загружаю BMP-файл размером 100x100 px
         imgBG.Canvas.Brush.Bitmap:=bmpImage; //Ассоциирую его с кистью TImage
         rectFill.Left:=0;
         rectFill.Top:=0;
         rectFill.Right:=400;
         rectFill.Bottom:=400;
         imgBG.Canvas.FillRect(rectFill); //Пробую замостить квадрат 400x400 px
        Finally
         FreeAndNil(bmpImage);
        End;
И эффекта почему-то нет: отображается только 1 экземпляр изображения 100x100. Что я делаю неправильно?
hexor_boo вне форума Ответить с цитированием
Старый 16.03.2024, 18:19   #2
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 114
По умолчанию

Делаю так:
Код:
       bmpImage:=TBitmap.Create;
        Try
         bmpImage.LoadFromFile(SDBV.bg_pic_path);
         imgBG.Canvas.Brush.Bitmap:=bmpImage;
         imgBG.Canvas.FillRect(Rect(0,0,400,400));
        Finally
         imgBG.Canvas.Brush.Bitmap:=Nil;
         bmpImage.Free;
        End;
- то же самое: отображается BMP-шник 100x100
hexor_boo вне форума Ответить с цитированием
Старый 16.03.2024, 18:29   #3
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 114
По умолчанию

Бинго!
Код:
       bmpImage:=TBitmap.Create;
        Try
         imgBG.Picture:=Nil;//Эта строчка оказалась решающей (в предыдущей части кода в TImage была загружена картинка, которая мешает, как выяснилось)
         bmpImage.LoadFromFile(SDBV.bg_pic_path);
         imgBG.Canvas.Brush.Bitmap:=bmpImage;
         imgBG.Canvas.FillRect(imgBG.BoundsRect);
        Finally
         imgBG.Canvas.Brush.Bitmap:=Nil;
         bmpImage.Free;
        End;
hexor_boo вне форума Ответить с цитированием
Старый 16.03.2024, 18:50   #4
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 114
По умолчанию

Осталось найти аналогичное решение для TJPEGImage (потому что файлы ощутимо меньше, чем BMP) и для TPNGObject (потому что нужна поддержка прозрачности, компонент с которым работаю прилагается). GIF возможно тоже буду добавлять.
Вложения
Тип файла: zip PngDelphi.zip (284.6 Кб, 0 просмотров)

Последний раз редактировалось hexor_boo; 16.03.2024 в 19:15.
hexor_boo вне форума Ответить с цитированием
Старый 18.03.2024, 02:08   #5
hexor_boo
Разъяснятор
Форумчанин
 
Аватар для hexor_boo
 
Регистрация: 21.04.2022
Сообщений: 114
По умолчанию

Решение для TJPEGImage:
Код:
 Procedure TileBG_JPG(imgBG : TImage; SDBV : TServerDBVars);
  Var
   srcImg       : TImage;
   X, Y, dX, dY : Integer;
  Begin
   srcImg:=TImage.Create(frmMain);
    Try
     srcImg.Visible:=False;
     srcImg.AutoSize:=True;
     srcImg.Picture.LoadFromFile(SDBV.bg_pic_path);
     dX:=srcImg.Width;
     dY:=srcImg.Height;
     Y:=0;
     imgBG.Picture:=Nil;
      While (Y<SDBV.base_height) Do
       Begin
        X:=0;
         While (X<SDBV.base_width) Do
          Begin
           imgBG.Canvas.Draw(X, Y, srcImg.Picture.Graphic);
           Inc(X, dX);
          End;
        Inc(Y, dY);
       End;
    Finally
     srcImg.Free;
    End;
  End;
hexor_boo вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Try и TImage [Delphi 7] -Jack- Общие вопросы Delphi 7 01.11.2012 02:11
Delphi. Массив TImage Sna1L Помощь студентам 3 23.06.2011 16:10
TImage. Delphi PianeR Помощь студентам 2 02.02.2011 19:59
Рисование Delphi 7 на Timage Dalagardi Помощь студентам 4 24.04.2010 16:17
Timage в Delphi TaYgA Помощь студентам 16 25.10.2009 20:11