Главная страница
    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.48 MB
Время: 0.021 c
14-1091866279
Stany
2004-08-07 12:11
2004.08.29
"Удаленный рабочий стол"


14-1092189396
Думкин
2004-08-11 05:56
2004.08.29
С днем рождения! 11 августа


1-1092317777
Alex____
2004-08-12 17:36
2004.08.29
Принцып работы архиватора.


1-1092219422
Zlodey
2004-08-11 14:17
2004.08.29
Управление компонентами формы из модуля данных


11-1080045027
user
2004-03-23 15:30
2004.08.29
Как перерисовать окно?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский