Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Реализация «движения» по однородному и сложному фону.
Для организации перемещения фигуры по однородному фону можно выделить следующие действия:
Для организации движения фигуры по сложному фону необходимо перерисовывать весь фон или сохранять часть фона (под фигурой) в буфере, а затем после того, как фигура перемещается на новую позицию, восстанавливать его. В этом случае последовательность действий будет следующая:
Для реализации данной последовательности дей ствий необходимо использовать класс Bitmap. Напишем функции для сохранения и восстановления части фона. Сохранение: Bitmap^ pictureToBitmap(PictureBox^ pBox, Rectangle Section) { Bitmap^ Bmp = gcnew Bitmap(Section.Width, Section.Height); Graphics^ Gt = Graphics::FromImage(Bmp); Gt->DrawImage(pBox->Image, 0, 0, Section, GraphicsUnit::Pixel);
return Bmp; } Восстановление: void bitmapToPicture(PictureBox^ pBox, Point P, Bitmap^ Bmp) { Graphics^ G = Graphics::FromImage(pBox->Image); G->CompositingMode = Drawing2D::CompositingMode::SourceCopy; G->DrawImage(Bmp, P); pBox->Invalidate(); } Последовательность действий для организации движения можно реализовать в обработчике события на тик компонента таймер: System::Void timer_Tick(System::Object^ sender, System::EventArgs^ e) { bitmapToPicture(pBox, Point(X, Y), B);
moveFig(fig, X, Y);
Rectangle Section(X, Y, W, H);
B = pictureToBitmap(pBox, Section);
drawFig(pBox, fig, X, Y); }
|
||
Последнее изменение этой страницы: 2018-06-01; просмотров: 270. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |