Конференция ".Net" » Сжать изображение [D2005]
 
  • anton773 © (10.05.06 21:46) [0]
    Снова здравствуйте! Извиняюсь за назойливость. Как используя .NET уменьшить рисунок в размерах( например установить 300 dpi)
  • Lamer@fools.ua © (11.05.06 11:42) [1]
    System.Drawing.Bitmap.SetResolution()
  • Джо © (11.05.06 15:02) [2]
    Осталось только добавить, что изображение при этом не "сжимается" :)
  • anton773 © (13.05.06 19:37) [3]

    > System.Drawing.Bitmap.SetResolution()

    Это понятно. а как затолкать рисунок из imppictureBox в System.Drawing.Bitmap. Должно получиться вроде
    var BM:System.Drawing.Bitmap; BM:= ImppictureBox1.Image

    Заранее спасибо.
  • anton773 © (14.05.06 18:22) [4]
    Другими словами примерчик ПЛЗ.
  • anton773 © (14.05.06 20:20) [5]
    Пробую делать так:                                                                                                          
    procedure TForm2.Button3Click(Sender: TObject);
    var
    bm: System.Drawing.Bitmap;
    begin
    bm:= System.Drawing.Bitmap.Create(ImpPictureBox1.Image);
    bm.SetResolution(300,300);
    ImpPictureBox1.Image:= bm;
    end;

    размеры рисунка не меняются.Где я не прав?
  • Lamer@fools.ua © (15.05.06 09:15) [6]
    >Где я не прав?

    См. [2].
    [1] — это ответ на "установить 300 dpi".
  • anton773 © (15.05.06 18:27) [7]

    > См. [2].

    Извиняюсь,возможно я неправильно выразился.Мне нужно чтобы большой рисунок уместился целиком на PictureBox.Помогите ПЛЗ.
  • Джо © (15.05.06 18:38) [8]
    > [7] anton773 ©   (15.05.06 18:27)
    >
    > > См. [2].
    >
    > Извиняюсь,возможно я неправильно выразился.Мне нужно чтобы
    > большой рисунок уместился целиком на PictureBox.Помогите
    > ПЛЗ.

    О! Тогда причем тут какие-то DPI? :)

    Вполне достаточно установить у PictureBox'а SizeMode в StretchImage и картинка автоматически будет ужиматься до нужного размера.
  • anton773 © (15.05.06 21:04) [9]

    > Вполне достаточно установить у PictureBox'а SizeMode в StretchImage

    Если бы я работал с C# то то так бы и поступил. Прямо в инспекторе объектов установил бы StretchImage. Но я " мучаю" Delphi .NET И  PictureBOX У меня импортированный из System.windows.forms.dll (воспользовался соответствующим мастером импорта NET компонентов,входящим в 2005 делфи) И свойства SizeMode в инспекторе объектов нет. Невозможно так же программно присвоить свойству ImpPictureBox1 значение StretchImage.Пробовал так:ImpPictureBox1.SizeMode:= StretchImage;
  • Джо © (15.05.06 21:38) [10]
    > Пробовал так:ImpPictureBox1.SizeMode:= StretchImage;

    Пробуй так:
    PictureBox1.SizeMode := PictureBoxSizeMode.StretchImage;
  • anton773 © (15.05.06 21:52) [11]

    > Пробуй так:
    > PictureBox1.SizeMode := PictureBoxSizeMode.StretchImage;
    >

    не работает. жалуется что PictureBoxSizeMode недекларированный идентификатор. Хотя решение где-то близко.
  • Джо © (15.05.06 22:16) [12]
    Ну, посмотри, где он объявлен.
    Я вообще проблемы не понимаю. Зачем его было импортировать, если он и так уже есть в палитре компонентов.
  • anton773 © (16.05.06 05:10) [13]

    > Я вообще проблемы не понимаю. Зачем его было импортировать,
    >  если он и так уже есть в палитре компонентов.

    Он есть только в WinForm и C# в VCL .NET его нет.Там есть только Iimage, а применить к нему метод RotateFlip...( только по этой причине пришлось заниматься импортом PIctureBox ) похоже нельзя
  • anton773 © (16.05.06 19:21) [14]
    Джо огромное спасибо за помощь(без тебя я бы не разобрался) Наконец у меня всё работает. PictureBoxSizeMode объявлен в System.Windows.Forms
 
Конференция ".Net" » Сжать изображение [D2005]
Есть новые Нет новых   [134430   +1][b:0][p:0.001]