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

Вниз

Компонент Image. Копирование изображений.   Найти похожие ветки 

 
TX12   (2008-03-10 13:28) [0]

Помогите решить проблему. Имеется изображение на Image10. Также имеются 9 компонентов Image1-9(компоненты расставлены на форме с такими же пропорциями(Height&Width) как и Image10). Каким образом можно "залить" изображение с image10 в компоненты image1-9, так что бы в последних компонентах была точная копия изображения с Имейдж10(сорри за тавтологию)? Пробовал так:

var a1,a2,a3:TPicture;
begin
begin
image10.Height:=105;
image10.Width:=105;
a1:=image10.picture;
image1.Picture:=a1;
end;
begin
image10.Height:=105;
image10.Width:=210;
a2:=image10.Picture;
image2.Picture:=a2;
тогда программа просто напросто копирует изображение начиная с Image10.height:=0 и image10.width:=0. Для Image1 это верно, а вот для Image2 нужно что бы изображение копировалось с image10.height:=105 image10.width:=210. Каким образом это реализовать?


 
tesseract ©   (2008-03-10 14:51) [1]


> Для Image1 это верно, а вот для Image2 нужно что бы изображение
> копировалось с image10.height:=105 image10.width:=210.


Assign используй и поставь stretch в true.


 
TX12   (2008-03-10 18:42) [2]


> Assign используй и поставь stretch в true.


Чуть подробнее можно?


 
Amoeba ©   (2008-03-11 00:14) [3]


> TX12   (10.03.08 18:42) [2]
>
>
> > Assign используй и поставь stretch в true.
>
>
> Чуть подробнее можно?


Клавиша F1 + учебник в руки.


 
TX12   (2008-03-11 17:31) [4]


> Клавиша F1 + учебник в руки.


смешно ппц. прочитай вопрос аккуратно. Про ассигн и стреч я ознакомлен. Вот только как его применить в моей то проблеме???


 
Игорь Шевченко ©   (2008-03-11 17:36) [5]

разбить на квадратики надо ?


 
VirEx ©   (2008-03-11 17:36) [6]


>  [4] TX12   (11.03.08 17:31)

если бы ты был "ознакомлен", то не задавал бы таких вопросов.


 
{RASkov} ©   (2008-03-11 17:52) [7]

> [4] TX12   (11.03.08 17:31)

Я читал-читал... [0] но так и не понял о чем там.....
Но подозреваю, что [5] прав и CopyRect тебе поможет....


 
MetalFan ©   (2008-03-11 19:46) [8]


> так что бы в последних компонентах была точная копия изображения
> с Имейдж10

и

> а вот для Image2 нужно что бы изображение копировалось с
> image10.height:=105 image10.width:=210

чтото не очень совместимы.
но скорее всего в [7] истина


 
Amoeba ©   (2008-03-12 01:06) [9]

Удалено модератором


 
TX12   (2008-03-12 08:25) [10]


> Не смеши мои тапки!


курить меньше нужно)


> разбить на квадратики надо ?

угу


 
Игорь Шевченко ©   (2008-03-12 10:40) [11]

TX12   (12.03.08 08:25) [10]


> угу


Попробуй загрузить большой Image в ImageList, подобрав его размеры так, чтобы в нем помещалось целое число частей изображения, а потом в цикле заполняй квадратики, вызывая ImageList.GetBitmap, увеличивая индекс битмапа. Я правда из файла таким методом загружал, пользуя ImageList.FileLoad

Если не поможет, то BitBlt со смещением, опять же в цикле - оно все умеет.


 
{RASkov} ©   (2008-03-12 14:23) [12]

Как вариант, сделать нечто вот такое:
function GetRect(ImW, ImH, Quantity, Index): TRect;
begin

end;


ну и CopyRect(R, Image10.Canvas, GetRect(Image10.Picture.Bitmap.Width, Image10.Picture.Bitmap.Height, 9, 2));

т.е. копируем кусок под указанным номером на любуб канву в область R...
где ImW, ImH - Ширина и высота всей области картинки.
   Quantity - Всего кусков. (9)
   Index    - Нужный нам кусок (2)....

Вот только не соображу как сделать расчет "сетки" т.е.
если Quantity = 1 сетка 1х1
#
если 2 - 2х1
##
3 - 3х1
###
4 - 2х2
##
##
!5 - 5х1
#####
6 - 3х2
###
###
7 - 7х1
!#######
8 - 4х2
####
####
9 - 3х3
###
###
###
.....
16 - 4x4
####
####
####
####
и т.д.
Или как вариант при таких числах Quantity, как 5, 7, 11 (простые что ли?) и т.д. генерить исключение....

Можно, как вариант, не парится с этими расчетами а "в ручную" передавать размеры сетки, тогда можно будет передать такие как например (2x15), что не получится в "автоматическом".... :)
Ну а уж зная сетку, ширину и высоту исх. рисунка, и индекс части - не проблема высчитать и область этой части(части под номером Index).... даже и я это смогу со своими "мощнейшими" познаниями в математике :)


 
{RASkov} ©   (2008-03-12 15:15) [13]

> function GetRect(ImW, ImH, Quantity, Index): TRect;

*function GetRect(ImW, ImH, Quantity, Index: Integer): TRect;

Кому не трудно напишите функцию определения сетки... т.е. нечто так:
type
 TCells = record
  Col, Row: Integer;
 end;
function CalcCells(Quantity: Integer): TCells;
begin
 if Quantity is <простое число> then raise Excaption.Create("Не выйдет из этого сетки");
 with Result do begin
  Col:=?
  Row:=?
 end;
end;

"Чёта" я никак не соображу, как "ее сделать" :(



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

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

Наверх





Память: 0.48 MB
Время: 0.007 c
15-1203500464
pasha_golub
2008-02-20 12:41
2008.04.06
Стоит ли переводить проект с 7 на 2007?


15-1203686127
kaif
2008-02-22 16:15
2008.04.06
Погода


2-1205322559
Сантехник
2008-03-12 14:49
2008.04.06
редактирование записи


9-1169059683
Ericc
2007-01-17 21:48
2008.04.06
ОФФ:На этом сайте была игрушка "Гробница фараона"


3-1194945628
Кирей
2007-11-13 12:20
2008.04.06
Как избавиться от лишних пробелов в результате запроса





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