На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Изменение размера изображения TJPEGImage , не только 1-1..1-8
    Здравствуйте.
    У меня такая проблема: есть TImage, в Canvas котого я помещаю изображение из TJPEGImage потом сверху него рисую линии и надписи. Мне нужно изменять масштаб исходного изображения не трогая при этом мои рисунки. Я пробовала менять таким образом:
    ExpandedWrap disabled
         Image.Height:=Round(Jpg.Height*Scale.Value/100);
         Image.Width:=Round(Jpg.Width*Scale.Value/100);
         Image.Canvas.Draw(0,0,Jpg);
         Image.Stretch:=true;

    Но при этом мои надписи и линии тоже уменьшались.
    Если использовать Scale класса TJPEGImage, то все отлично, но там всего 4 значения.
    Какие есть варианты?
    Заранее благодарна.
      Сначала ресайз картинки а потом на этой картинке рисовать всё что душе угодно
        VahaC, как сделать ресайз картинки средствами Delphi?
          Что бы это узнать надо будет сделать несколько шагов:
          1 скачать последнюю версию DRKB
          2 установить его
          3 проследовать в нём по следующему пути Графика и Мультимедиа -> JPEG
          4 почитать там

          ;)
            Я уже во многих местах видела такой пример масштабирования изображения:
            ExpandedWrap disabled
              try  
                Image1.Picture.Graphic := nil;  
                Image1.Picture.LoadFromFile(jpegfile);  
              except  
                on EInvalidGraphic do  
                  Image1.Picture.Graphic := nil;  
              end;  
              if Image1.Picture.Graphic is TJPEGImage then  
              begin  
                TJPEGImage(Image1.Picture.Graphic).Scale := Self.Scale;  
                TJPEGImage(Image1.Picture.Graphic).Performance := jpBestSpeed;  
              end;

            Но вот кто мне скажет, в строке:
            ExpandedWrap disabled
                TJPEGImage(Image1.Picture.Graphic).Scale := Self.Scale;

            Что за Self?
              Цитата Лисенок @
              Что за Self?

              Так сказать указатель на самого себя.
                Цитата VahaC @
                Цитата (Лисенок @ Вчера, 21:58)
                Что за Self?

                Так сказать указатель на самого себя.

                На форму получается?
                  Ты лучше нормально обясни что тебе надо сделать, а то как здесь(на форуме) не однократно повторяли "Экстрасенсы в отпуске".
                    Хорошо.
                    У меня на форме есть компонент TImage в него я заливаю изображение с помощью TJPEGImage. Сверху этого изображения рисую линии и надписи. Мне нужно иметь возможность менять масштаб изображения, не трогая нарисованные мною линии.
                    Вот код:
                    ExpandedWrap disabled
                        ePath.Text:=OpenPictureDialog.FileName;
                        Jpg:=TJPEGImage.Create;
                        Jpg.LoadFromFile(ePath.Text);
                        Image.Canvas.FillRect(Rect(0,0,Image.Width,Image.Height));
                        Image.Height:=Round(Jpg.Height*Scale);
                        Image.Width:=Round(Jpg.Width*Scale);
                        Image.Canvas.Draw(0,0,Jpg);
                        Image.Stretch:=true;

                    При таком коде мои линии тоже уменьшаются.
                    Есть другой вариант:
                    ExpandedWrap disabled
                        ePath.Text:=OpenPictureDialog.FileName;
                        Jpg:=TJPEGImage.Create;
                        Jpg.LoadFromFile(ePath.Text);
                        Jpg.Scale:=jsHalf;
                        Image.Height:=Jpg.Height;
                        Image.Width:=Jpg.Width;
                        Image.Canvas.FillRect(Rect(0,0,Image.Width,Image.Height));
                        Image.Canvas.Draw(0,0,Jpg);

                    Здесь с моими линиями и надписями ничего не происходит, но есть только 4 варианта масштаба: jsFullSize, jsHalf, jsQuarter, jsEighth.
                      Цитата Лисенок @
                      Image.Canvas.Draw(0,0,Jpg);
                      Image.Stretch:=true;

                      Попробуй так:
                      ExpandedWrap disabled
                        Image.Canvas.StretchDraw(Rect(0,0,Image.Width,Image.Height),Jpg);
                        //Image.Stretch:=true; //!!! убрать
                        leo, спасибо, получилось!
                        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0.0709 ]   [ 15 queries used ]   [ Generated: 24.07.26, 11:02 GMT ]