Текущий архив: 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