Изменение размера изображения TJPEGImage
, не только 1-1..1-8
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.249] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Изменение размера изображения TJPEGImage
, не только 1-1..1-8
|
Сообщ.
#1
,
|
|
|
|
Здравствуйте.
У меня такая проблема: есть TImage, в Canvas котого я помещаю изображение из TJPEGImage потом сверху него рисую линии и надписи. Мне нужно изменять масштаб исходного изображения не трогая при этом мои рисунки. Я пробовала менять таким образом: ![]() ![]() 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 значения. Какие есть варианты? Заранее благодарна. |
|
Сообщ.
#2
,
|
|
|
|
Сначала ресайз картинки а потом на этой картинке рисовать всё что душе угодно
|
|
Сообщ.
#3
,
|
|
|
|
VahaC, как сделать ресайз картинки средствами Delphi?
|
|
Сообщ.
#4
,
|
|
|
|
Что бы это узнать надо будет сделать несколько шагов:
1 скачать последнюю версию DRKB 2 установить его 3 проследовать в нём по следующему пути Графика и Мультимедиа -> JPEG 4 почитать там |
|
Сообщ.
#5
,
|
|
|
|
Я уже во многих местах видела такой пример масштабирования изображения:
![]() ![]() 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; Но вот кто мне скажет, в строке: ![]() ![]() TJPEGImage(Image1.Picture.Graphic).Scale := Self.Scale; Что за Self? |
|
Сообщ.
#6
,
|
|
|
|
Цитата Лисенок @ Что за Self? Так сказать указатель на самого себя. |
|
Сообщ.
#7
,
|
|
|
|
Цитата VahaC @ Цитата (Лисенок @ Вчера, 21:58) Что за Self? Так сказать указатель на самого себя. На форму получается? |
|
Сообщ.
#8
,
|
|
|
|
Ты лучше нормально обясни что тебе надо сделать, а то как здесь(на форуме) не однократно повторяли "Экстрасенсы в отпуске".
|
|
Сообщ.
#9
,
|
|
|
|
Хорошо.
У меня на форме есть компонент TImage в него я заливаю изображение с помощью TJPEGImage. Сверху этого изображения рисую линии и надписи. Мне нужно иметь возможность менять масштаб изображения, не трогая нарисованные мною линии. Вот код: ![]() ![]() 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; При таком коде мои линии тоже уменьшаются. Есть другой вариант: ![]() ![]() 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. |
|
Сообщ.
#10
,
|
|
|
|
Цитата Лисенок @ Image.Canvas.Draw(0,0,Jpg); Image.Stretch:=true; Попробуй так: ![]() ![]() Image.Canvas.StretchDraw(Rect(0,0,Image.Width,Image.Height),Jpg); //Image.Stretch:=true; //!!! убрать |
|
Сообщ.
#11
,
|
|
|
|
leo, спасибо, получилось!
|