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

Вниз

CopyRect   Найти похожие ветки 

 
ser_ega   (2004-09-30 21:40) [0]

Привет! Сделал так:
var
 ARect: TRect;
begin
with Image1.Canvas do
 begin
   CopyMode := cmWhiteness;
   ARect := Rect(0, 0, 50, 50);
   CopyRect(ARect, Image1.Canvas, ARect);
   CopyMode := cmSrcCopy; { restore the copy mode }
 end;
End;
Как теперь скорированный ARect сохранить в файл!


 
Рыба ©   (2004-09-30 22:54) [1]

Не понял, ты имаг сам на себя что ли копируешь? :))

Лучше делай так:

var Bmp: TBitmap;
begin
 Bmp := TBitmap.Create;
 try
   ARect := Rect(0, 0, 50, 50);
   with Bmp, ARect do begin
     Canvas.CopyMode := cmWhiteness;
     Canvas.CopyRect(Rect(0,0,Right-Left,Bottom - Top), Image1.Canvas, ARect);
   end;
   Bmp.SaveToFile("copyrect.bmp");
 finally
   Bmp.Free;
 end;
end;


 
Рыба ©   (2004-09-30 22:57) [2]

Уй забул размеры битмапа установить:

var Bmp: TBitmap;
begin
 Bmp := TBitmap.Create;
 try
   ARect := Rect(0, 0, 50, 50);
   with Bmp, ARect do begin
     Width := Right-Left;
     Height := Bottom - Top;

     Canvas.CopyMode := cmWhiteness;
     Canvas.CopyRect(Rect(0,0,Width,Height), Image1.Canvas, ARect);
   end;
   Bmp.SaveToFile("copyrect.bmp");
 finally
   Bmp.Free;
 end;
end;


 
ser_ega   (2004-09-30 23:10) [3]

Как-то не так получается как бы мне хотелось! Ты сделал, что  Image стает белым цветом и сохраняет этот белый квадрат! А мне надо из картинки скопировать Rect и сохранить этот Rect(а не то что осталось от Rect) в Файл!


 
Рыба ©   (2004-09-30 23:26) [4]

Белый, потомучто
>   Canvas.CopyMode := cmWhiteness;
Ты сам так написал.

Укажи Canvas.CopyMode := cmSrcCopy;


 
ser_ega   (2004-09-30 23:51) [5]

А ты можеш объяснить что такое Rect(0,0,Width,Height) и ARect? Что это за прямоугольники? Чето не могу понять!


 
ser_ega   (2004-10-01 10:30) [6]

А нет, все понятно.


 
ser_ega   (2004-10-02 22:21) [7]

А кто это написал "А нет, все понятно"? Точно не я!

Кто нибуть, расскажите что такое Rect(0,0,Width,Height) и ARect, какова их роль? Ато я копирую прямоугольник, а он получается совсем в других пропорциях! Что за ДЕЛА!


 
Рыба ©   (2004-10-02 22:41) [8]

ARect := Rect(0, 0, 50, 50); - здесь задаем прямоугольник, который надо скопировать.
Rect(0,0,Width,Height) - прямоугольник растра, на который копируем (т.е. весь битмап).


 
ser_ega   (2004-10-02 23:59) [9]

Ну если я сделаю так:
Canvas.CopyRect(Rect(0,0,313,225), Image1.Canvas, Rect(0,0,313,225));
то поидее пропорции должны быть одинаковые? А у меня они совсем РАЗНЫЕ! Получается по ширине растянуто, а по высоте сжато!


 
Рыба ©   (2004-10-03 12:54) [10]

>ser_ega  (02.10.04 23:59) [9]
>Canvas.CopyRect(Rect(0,0,313,225), Image1.Canvas, Rect(0,0,313,225));

Если ты сделаешь так, и размеры растра при этом будут 313х225, то должно работать нормально. Ищи ошибку в другом месте и читай справку.


 
ser_ega   (2004-10-03 23:08) [11]

Чето не получается! А ты можеш сделать такую прогу (правильно работающую) и скинуть мне на мыло? ПЛИЗ!


 
Рыба ©   (2004-10-03 23:18) [12]

Сделать могу, скинуть не могу :))
Покажи код.

ЗЫ:
Попробуй поменять местами прямоугольники:
Canvas.CopyRect(ARect, Image1.Canvas, Rect(0,0,Width,Height));
Может быть я чего попутал... ))


 
Рыба ©   (2004-10-03 23:20) [13]

Хотя нет, ничего не попутал. Ищи у себя ошибку.


 
ser_ega   (2004-10-03 23:53) [14]

Bmp := TBitmap.Create;
 try
  ARect := Rect(StrtoInt(Edit1.Text), StrtoIntEdit2.Text),
                StrtoInt(Edit3.Text), StrtoInt(Edit4.Text));
  with Bmp, Arect do begin
    Width :=Right-Left;
    Height := Bottom - Top;
    Canvas.CopyRect(ARect(0,0,Width,Height), Image1.Canvas, ARect);
  end;
  Bmp.SaveToFile("c:\copyrect.bmp");

  Image2.Picture.Bitmap:=bmp;
  finally
    Bmp.Free;
  end;


 
ser_ega   (2004-10-03 23:57) [15]

Width и Height к чем относится? К Bmp или к Arect?


 
Рыба ©   (2004-10-04 00:21) [16]

>ser_ega  (03.10.04 23:57) [15]
>Width и Height к чем относится? К Bmp или к Arect?

К Bmp.
Не похоже, что это ты прямо из исходников скопировал...


 
Mihey_temporary ©   (2004-10-04 00:39) [17]


> Не похоже, что это ты прямо из исходников скопировал...


А может он F9 ещё не нажимал? :)


 
ser_ega   (2004-10-04 00:43) [18]

Что значит не нажимал? Я говорю что пропорции не совпадают, значит нажимал!

<Рыба
А Right, Left,Bottom и Top тогда к чему относятся? Ведь у BMP таких нет!


 
Рыба ©   (2004-10-04 00:52) [19]

>А Right, Left,Bottom и Top тогда к чему относятся? Ведь у BMP таких нет!

Это уже от ARect.


 
Рыба ©   (2004-10-04 00:58) [20]

Может ты Edit-ы перепутал? :)


 
ser_ega   (2004-10-04 11:25) [21]

Так я уже и без них делал!!!
----
Bmp := TBitmap.Create;
 try
   ARect := Rect(0,0,225,313);
   with Bmp, Arect do begin
        Height :=Bottom - Top;
        Width :=Right-Left;
        Canvas.CopyRect(Rect(0,0,Width,Height), Image1.Canvas, ARect);
  end;
  Bmp.SaveToFile("c:\copyrect.bmp");
  Image2.Picture.Bitmap:=bmp;
  finally
    Bmp.Free;
  end;
----
А ты попробуй у себя такой код! И потом скажеш идет или нет! ПЛИЗ!


 
ser_ega   (2004-10-04 11:54) [22]

Аааааааааааа! Нашел я в чем у меня прогон! У меня просто для Image1.Stretch:=true!

Еще такой вопросик: Можна ли узнать какой размер битмапа (в байтах) без сохранения его на винт?

Спасибо тебе за все!



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

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

Наверх





Память: 0.49 MB
Время: 0.078 c
6-1098334391
_Maniac_
2004-10-21 08:53
2005.01.09
Каскад прокси


1-1103547659
Progh
2004-12-20 16:00
2005.01.09
TShellListView


1-1103703634
Симонова Ирина
2004-12-22 11:20
2005.01.09
AcrobatReader


4-1101213537
Алексей
2004-11-23 15:38
2005.01.09
BorderStyle


14-1103363351
Чеширский_Кот
2004-12-18 12:49
2005.01.09
Сегодня намечается нехилая заруба





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