|
Программирование >> Автоматически обновляемые приложения
Как создать затемненную картинку Еще один эффект - создание затемненной картинки, как это происходит при выключении компьютера, - показан в листинге 7.14. ............................................. V -................5*.......................................................;...........................................................: Листинг 7.14. Создание затемненной картинки private void button3 Click(object sender, EventArgs e) { Получить изображение Image img = pictureBoxl.Image; Создаем объект атрибутов изображения ImageAttributes ia = new ImageAttributes(); создаем атрибуты по матрице преобразования ColorMatrix cm = new ColorMatrix(); cm.MatrixOO = 0; cm.Matrixll = 0; cm.Matrix22 = 0; cm.Matrix33 = 0.25f; cm.Matrixl2 = 1 / 3f cm.Matrix20 = 1 / 3f cm.Matrix21 = 1 / 3f cm.Matrix22 = 1 / 3f ia.SetColorMatrix(cm) ; Рисуем новое изображение с помощью преобразования Graphics g = Graphics.Fromlmage(img); g.Drawlmage(img, new Rectangle(0, 0, img.Width, img.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia) Обновляем рисунок pictureBoxl.Invalidate(); g. Dispose () ; Кстати, если еще раз нажмете на кнопку, то изображение еще больше затемнится. Таким образом можно создать эффект постепенного затемнения изображения вплоть до появления черного прямоугольника. Эффект недоступной кнопки Есть еще один способ получения серого изображения. У класса ControlPaint есть метод DrawImageDisabled, КОТОрыЙ ИСПОЛЬЗуетСЯ ДЛЯ ПОЛученИЯ ИЗО- бражения недоступной кнопки. Возьмем этот метод на вооружение и напишем использующий его код (листинг 7.15). Листинг 7.15. Получение недоступного изображения private void button4 Click(object sender, EventArgs e) { Graphics g = pictureBoxl.CreateGraphics(); ControlPaint.DrawImageDisabled(g, pictureBoxl.Image, 2, 2, Color.Red); g.Dispose() ; Примечание Примеры применения эффектов к изображениям находятся в папке Im-ageFX на прилагаемом диске. ia.SetColorMatrix(cm); Рисуем новое изображение с помощью преобразования Graphics g = Graphics.Fromlmage(img); g.Drawlmage(img, new Rectangle(0, 0, img.Width, img.Height), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, ia); Обновляем рисунок pictureBoxl.Invalidate(); g.Dispose () ; ; Листинг 7.16. Создание вдавленного и выпуклого текста using System.Drawing.Drawing2D; private void button2 Click(object sender, EventArgs e) { Рисуем вдавленный текст SolidBrush solBrush = new SolidBrush(Color.Gray); Font f = new Font( Tahoma , 48, FontStyle.Bold) ; Graphics g = CreateGraphics(); g.Clear(BackColor) ; g.Drawstring( C#.Народные советы , f, solBrush, 10, 10); solBrush.Color = Color.White; Смещаем строку чуть ниже и правее д.Drawstring( С#.Народные советы , f, solBrush, 12, 11); g.Dispose(); private void buttonl Click(object sender, EventArgs e) { Рисуем выпуклый текст SolidBrush solBrush = new SolidBrush(Color.Gray); Font f = new Font( Tahoma , 48, FontStyle.Bold); Graphics g = CreateGraphics(); g.Clear(BackColor); g.Drawstring( C#.Народные советы , f, solBrush, 10, 10); solBrush.Color = Color.White; Смещаем строку чуть выше и левее д.Drawstring( С#.Народные советы , f, solBrush, 8, 8); g.Dispose(); Как нарисовать вдавленный и выпуклый текст? Чтобы текст на форме выглядел более красивым, его стараются сделать объемным. Существует два вида объемности - выпуклый (рис. 7.3) и вдавленный (рис. 7.4). Для достижения подобных эффектов достаточно сместить второй такой же текст относительно первого, но отобразить его другим цветом, который будет имитировать тень. Этот способ широко используется во многих графических редакторах. Нам достаточно вызвать два раза метод Drawstring С разными смещениями (листинг 7.16).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |