Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.03 c
14-1091971686
Cerberus
2004-08-08 17:28
2004.08.29
Опрос


1-1092401649
Nata
2004-08-13 16:54
2004.08.29
Файлы


14-1092214027
Тень отца Гамлета
2004-08-11 12:47
2004.08.29
Посмотрел Короля Артура


1-1092197326
dream
2004-08-11 08:08
2004.08.29
Как определить что сервис зарегестрирован ?


1-1092574828
petvv
2004-08-15 17:00
2004.08.29
О запуске приложений под DOS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский