Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Изменить размер изабражения?   Найти похожие ветки 

 
Ivolg   (2004-05-30 16:08) [0]

Как можно с помошью TImage уменьшить рисунок на 48*48 и в таком размере(48*48) сохранить! Пожайлусто помогите! СПАСИБО!


 
TUser ©   (2004-05-30 16:48) [1]

TBitMap, Width, Height, Canvas.CopyRect, SaveToFile.


 
Ivolg   (2004-05-30 17:23) [2]

TUser

 А пример можно! А то чёто не получается


 
Ivolg   (2004-05-31 07:52) [3]

Я делаю так:

    image1.Picture.Bitmap.LoadFromFile("d:\1.bmp");
    image1.Picture.Bitmap.Height:=48;
    image1.Picture.Bitmap.Width:=48;
    тут надо использовать Canvas.CopyRect,а я незнаю как?                         Помогите!! СПАСИБО!
    image1.Picture.Bitmap.SaveToFile("D:\2.bmp");


 
Ozone ©   (2004-05-31 08:17) [4]

А пример Delphi не судьба посмотреть?

var
 Bitmap: TBitmap;
 MyRect, MyOther: TRect;
begin
 MyRect := Rect(10,10,100,100);
 MyOther := Rect(10,111,100, 201);
 Bitmap := TBitmap.Create;
 Bitmap.LoadFromFile("c:\windows\tartan.bmp");
 Form1.Canvas.BrushCopy(MyRect,Bitmap, MyRect, clBlack);
 Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect);
 Bitmap.Free;
end;


 
Ivolg   (2004-05-31 20:09) [5]

Всё равно не помогает!


 
Ivolg   (2004-06-08 19:45) [6]

НУ кто нибудь? ПОМОГИТЕ!!!!!!!! ПОЖЙЛУСТА!!!!!!!!!!!


 
Chlavik ©   (2004-06-09 01:31) [7]

Надо просто заюзать свойство Stretch


 
Ivolg   (2004-06-09 15:53) [8]

Всё равно не помогает


 
Weber ©   (2004-06-09 16:01) [9]

1. Кидаешь на форму 2 TImage.
2. Устанавливаешь у одного из них Image1 размеры 48х48.
3. В другой Image2, при выполнении программы, LoadFromFile.
4. Далее Image1.StretchDraw(Image2).
5. Image1.SaveToFile.
Всё.
ЗЫ. Звоните поможем!
ЗЫ2. Без паники, пожалуйста!
:))))


 
Weber ©   (2004-06-09 16:04) [10]


> 4. Далее Image1.StretchDraw(Image2).

То есть Image1.Canvas.StretchDraw...


 
[BAD]Angel   (2004-06-09 16:07) [11]

когда-то я это делал... хотел заставить принтер печататьлучше! как ни странно StrechDraw помог :)


 
Alexander_K ©   (2004-06-09 17:54) [12]

Вот тебе код, правда написанный на C++Builder. На Делфи сам переведешь. Продцедура делает следующее: С фрейма сдирает все в канвас tmp, а потом печатает на принтер, но уже с размерами для принтера.

  HDC MDC;
  HBITMAP MBMP;
  TPrinter *prt = Printer();
  TCanvas *tmp = new TCanvas;
  try
   {
    prt->BeginDoc();

    TRect MR = Rect(0,0,Frame11->Image1->Width,Frame11->Image1->Height);
    TRect PR = Rect(0,0,Frame11->Image1->Width * prt->PageWidth / Frame11->Image1->Width,Frame11->Image1->Height * prt->PageWidth / Frame11->Image1->Width);
    MDC = CreateCompatibleDC(prt->Canvas->Handle);
//     MDC = CreateCompatibleDC(0);
    tmp->Handle = MDC;
    MBMP = CreateCompatibleBitmap(prt->Canvas->Handle, Frame11->Image1->Width, Frame11->Image1->Height);
    SelectObject(MDC, MBMP);
    Frame11->PaintTo(MDC,0,0);
    prt->Canvas->CopyRect(PR, tmp, MR);
    prt->EndDoc();
   }
  __finally
   {
    DeleteDC(MDC);
    DeleteObject(MBMP);
    delete tmp;
   }


 
Ivolg   (2004-06-10 10:33) [13]

Я сделал по совету [9]. У меня не вышло.Вот код:

image2.Picture.LoadFromFile("D:\1.bmp");
image1.Canvas.StretchDraw(image2.Canvas.ClipRect,image2.Picture.Graphic);  
image1.Picture.SaveToFile("d:\2.bmp");


 
Alexander_K ©   (2004-06-10 12:41) [14]

Ivolg   (10.06.04 10:33) [13]
Получается пустая картинка да?

Я же тебе говорю, там надо создавать Девайс контекст, то есть CreateCompatibleDC и CreateCompatibleBitmap - смотри в моем предыдущем примере.
Или если хочешь можешь посмотреть как в исходниках реализовано у TWinControl.WMPaint
В моем примере как раз все оттуда взято (только у меня на C++Builder написано, но по аналогии можно догадаться)


 
Alexander_K ©   (2004-06-10 14:42) [15]

На вот тебе тот же самый пример что и на C++
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 Prn: TPrinter;
 MDC: HDC;
 MBMP: HBITMAP;
 PR, MR: TRect;
 C: TCanvas;
begin
 if PrintDialog.Execute then
 try
   Prn := Printer;
   Prn.BeginDoc;
   MDC := CreateCompatibleDC(Prn.Canvas.Handle);
   C := TCanvas.Create;
   C.Handle := MDC;
   MBMP := CreateCompatibleBitmap(Prn.Canvas.Handle, Image.Width, Image.Height);
   SelectObject(MDC, MBMP);
   ScrollBox.PaintTo(MDC, 0, 0);
   SetRect(MR, 0, 0, Image.Width, Image.Height);
   SetRect(PR, 0, 0, Prn.PageWidth, Prn.PageHeight);
   Prn.Canvas.CopyRect(PR, C, MR);
   Prn.EndDoc;
 finally
   DeleteDC(MDC);
   DeleteObject(MBMP);
   C.Free;
 end;
end;

Под себя переделаешь сам.



Страницы: 1 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
14-1092138667
Sergey13
2004-08-10 15:51
2004.08.29
Книга Туркменбаши - смешно, ели б не так грустно


14-1092064390
Art_Z
2004-08-09 19:13
2004.08.29
Я поступил в ВУЗ!Ура!!!


1-1092299878
Fynjy
2004-08-12 12:37
2004.08.29
Манифест и ListBox


9-1083680150
min
2004-05-04 18:15
2004.08.29
Подскажите плз алгоритм полёта пули на OpenGl!!!


14-1092315003
Кириешки
2004-08-12 16:50
2004.08.29
У кого Opera стоит?