![]() |
|
|
#1
|
||||
|
||||
|
Допустим есть TImage размером 256х256 в него загрузено изоражение 1024х768. Как двигать попиксельно изображение внтури Image?
|
|
#2
|
||||
|
||||
|
Что ты имеешь ввиду???
Анимацию??? Или просто в Image видно только часть изображения??? Посмотри на функцию BitBlt...удобна для создания спрайтов...и не только... Копирует часть изображения в другое... Последний раз редактировалось NIch, 04.03.2010 в 14:26. |
|
#3
|
||||
|
||||
|
нет. не анимацию. нужно загружать в Image карту города и спомощю мышки передвигатся по ней.
|
|
#4
|
||||
|
||||
|
Обязательно в Image???
Код:
var
Map : TBitMap;
begin
Map := TBitMap.Create;
Map.LoadFromFile('Map.bmp');
BitBlt (Form1.Canvas.Handle,//на какую форму вывести изображение
100, 100, 256, 256, //2 координаты и размеры изображения
Map.Canvas.Handle,//какую картинку вывести
0, 0,//координаты начала прямоугольника картинки должны изменяться
SRCCOPY);//способ копирования изображения , бывают разные
end;Выводится изображение способом SRCCOPY на Form1 размером 256х256 по координатам 100, 100, взятое из Map. При этом из Map берется только кусок 256х256 начиная с 0, 0 (в данном случае)... При движении мыши ты должен пересчитывать последние координаты... |
|
#5
|
||||
|
||||
|
Большое спасибо NIch!!! Буду пробывать.
Если не сложно еще показать маленький пример как обрабатывать движение мыши. Только учусь работать с графикой... |
|
#6
|
||||
|
||||
|
Есть такие события как MouseMove, MouseUp, MouseDown...
Обрабатывай эти события...У них в параметрах есть переменные X и Y мыши... Поэкспериментируй с таким кодом и все поймешь... Код:
onMouseDown(X, Y ...) или Move или Up и т.д.
begin
ShowMessage('X = '+IntToStr(X)+' Y = '+IntToStr(X));
end; |
|
#7
|
||||
|
||||
|
Зачем использовать TImage, если для работы с большими картинками специально сделан компонент TScrolBox.
|
|
#8
|
||||
|
||||
|
Может и вариант...А как его найти???
|
|
#9
|
|||
|
|||
|
А зачем его искать?))
|
|
#10
|
||||
|
||||
|
Ну дык, как его на форму кинуть, где, в какой панели его взять???
Или это сторонний компонент??? Чуть позже... Ага нашел, но ведь он не работает с изображениями, по сабжу нужно на него Image кидать размером с изображение... Последний раз редактировалось NIch, 05.03.2010 в 10:26. |
|
#11
|
|||
|
|||
|
Ну дык и в чем проблема в нем динамически image создать по размерам картинки, хотя у image-a насколько я помню есть свои проблемы при работе с большими картинками. В идеале здесь нужен компонент с буферизацией, тогда работать будет быстро и надежно)
|
|
#12
|
||||
|
||||
|
Спасибо NIch буду пробывать твой вариант с BitBlt. А на счет Image то не обязательно просто ищу вариант как работать с картами. Возможно будут еще какие-то решения?
|
|
#13
|
||||
|
||||
|
2 Asinkrit
Ну дык, а кто говорит, что есть какая то проблема??? Я вообще предложил выше отказаться от TImage и работать непосредственно с изображением и рисовать прямо на форме... 2 movnet Кой какой опыт есть, если что обращайся, че нить придумаем... Последний раз редактировалось NIch, 05.03.2010 в 11:30. |
|
#14
|
||||
|
||||
|
NIch опыта работы с графикой практически 0.
только начинаю вникать. Буду благодарен за любую помощь!!! |
|
#15
|
||||
|
||||
|
Ну вот вам пример работы с большой картинкой.
Код:
procedure TForm43.FormCreate(Sender: TObject);
Var
Img: TImage;
begin
Img := TImage.Create(Self);
Img.Parent := ScrollBox1;
Img.Picture.LoadFromFile('YouBitmap.bmp');
Img.Width := Img.Picture.Width;
Img.Height := Img.Picture.Height;
end; |