- •Отображение графической информации с использованием HttpHandler
- •Отображение графической информации с использованием дополнительной страницы
- •Возможности преобразований графических файлов при их отображении на сайте
- •Вывод рисунков на Web сайт
- •Возможности преобразования форматов графических файлов с использованием класса Bitmap
- •Возможности сжатия и трансформации графических файлов, преобразованных в формат jpg
- •Сжатие формата jpg
- •Трансформация файла формата jpg
- •Возможности сжатия графических файлов изменением числа бит на пиксель и их трансформации
- •Использование метода DrawImage для работы с графическими файлами
- •Трансформация и прозрачность изображений
- •Имитация прозрачного фона и вывод рисунков с прозрачным фоном
Отображение графической информации с использованием дополнительной страницы
В данном способе для формирования графического изображения требуется отдельная .ASPX страница. Страница не имеет HTML содержания, ее основная задача - извлечение параметров из URL и использование их для формирования картинки.
В данном примере показано использование класса Page для создания страницы ASP.NET фонового кода и его использования для вывода графической информации.
Добавим к проекту новую Web форму MakeGraph.aspx и оставим в ней только первую строчку HTML кода:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="MakeGraph.aspx.aspx.cs" Inherits="MakeGraph.aspx" %>
Как и ранее определим необходимые объекты, и код формирования изображения:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public partial class MakeGraph : System.Web.UI.Page
{
private Bitmap objBitmap;
private Graphics objGraphics;
private Pen objPen;
private void Page_Load(object sender, System.EventArgs e)
{
objBitmap = new Bitmap(800, 900);
//Графическое представление objBitmap
objGraphics = Graphics.FromImage(objBitmap);
objGraphics.Clear(Color.GhostWhite);
//Далее можем рисовать на холсте все,
//что нам хочется, задавая параметры пера,
//линий, кистей
objPen = new Pen(Color.Blue);
objPen.DashStyle = DashStyle.Dot;
objPen.Width = 1;
objGraphics.DrawLine(objPen, 40, 0, 400, 0);
SolidBrush myBrush = new SolidBrush(Color.Silver);
objGraphics.FillRectangle(myBrush, 2, 2, 45, 78);
//И т.д и т.п
//Отображаем Bitmap с помощью OutputStream
objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
}//private void Page_Load
}
class MakeGraph мы определили как наследника Page - класса, который представляет файл .aspx, называемый также страницей веб-форм, запрашиваемый с сервера, где выполняется веб-приложение ASP.NET.
Этот класс целесообразно наследовать, когда необходимо создать страницу веб-форм, используя метод фонового кода. (Visual Studio .NET, автоматически используют эту модель для создания страниц веб-форм, так как объект Page является именованным контейнером для всех серверных элементов управления на странице.).
Класс Page связан с файлами, имеющими расширение .aspx. Эти файлы компилируются во время выполнения как объекты Page и кэшируются в памяти сервера.
Пространства имен System.Web.UI, System.Web.UI.WebControls, System.HTML.UI.WebControls, как раз и обеспечивают возможности класса Page.
Для использования данного кода, в вызывающей странице достаточно поместить тег:
<IMG src="MakeGraph.aspx">
Либо воспользоваться следующим вызовам в Default.aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
Image1.Attributes.Add("src","getgraph.aspx");
}
Для вывода файлов можно использовать следующий код файла MakeGraph.aspx:
protected void Page_Load(object sender, EventArgs e)
{
//Картинка хранится в Files/Images/ там где установлено приложение
string sFilename=Server.MapPath(@"Files/Images/Имя_Картинки");
Response.ContentType = "image/png";
Response.Write(sFilename);
}
Вызов остался тотже. Используя вызов с параметрами, можно выводить различные картинки.