Другие языки программирования и технологии

C# C++ Как сделать, чтобы при появлении форма раскручивалась в центре экрана.(подскажите алгоритм)

Прежде всего надо получить изображение формы в Bitmap
В C# это делается примерно так
пусть есть форма Form2, созданная в визуальном редакторе, тогда
using System.Drawing;
using System.Threading;
....
Form2 objForm2 = new Form2(); //создаём форму
objForm2.Visible = false; //Запрещаем показ на экране
objForm2.Show(); //Выводим невидимую форму (иначе в Bitmap не попадут внутренние элементы управления
Size objSize = objForm2.Size; //Получаем размер окна вместе с заголовком
Bitmap objBitmap = new Bitmap(objSize.Width, objSize.Height); //Создаём Bitmap в размеры окна
objForm2.DrawToBitmap(objBitmap, new Rectangle(0,0, objSize.Width, objSize.Height)); //Отрисовываем форму в Bitmap
objForm2.Close(); //Закрываем форму
---
Дальше в C# небольшая подставка - реализован поворот картинок только на градусы, кратные 90. Теперь её надо отобразить. Сделаем это в другой форме (пусть есть форма Form1 с PictureBox), можно установить сжатие картинки, чтобы было наглядно видно что происходит.. .
Form1.pictureBox1.Image = objBitmap; //Связываем PictureBox и Bitmap

for(int i=0;i<10;i++) //Будем 10 раз поворачивать
{
objBitmap.RotateFlip(RotateFlipType.Rotate90FlipNone); //Последовательно на 90 градусов
Form1.pictureBox1.Refresh(); //Вызываем перерисовку pictureBox1
Application.DoEvents(); //Даём возможность приложению отработать события
Thread.Sleep(1000); //Спим одну секунду
}

Если нужны повороты на заданный угол - делается формулами
x = xo + r * cos(alpha + beta)
y = yo + r * sin(alpha + beta)
xo,yo - центр поворота,
r - длина отрезка
Пиксели можно получить и установить у Bitmap с помощью функций GetPixel и SetPixel
Ну примерно так.... Набросок

P.S: Да! Можно выйти на хэндл окна рабочего стола и вызвать прорисовку прямо на нём, но это уже будет небезопасный код в C#.А так - н-р Form1 в дальнейшей делаем прозрачной и отключаем показ заголовков.. .
Роман Семиков
Роман Семиков
84 764
Лучший ответ
раскручивалась? как это? Чтобы, в прямом смысле, крутилась вокруг своей оси? попробуй для этого использовать, например, силверлигхт (силверлайт)

(англ. буквами писать не могу)