コード例 #1
0
	// Constructor, which saves away all of the important information.
	// We assume that the lock on the "graphics" object is held by the caller.
	internal GraphicsContainer(Graphics graphics)
			{
				// Push this container onto the stack.
				this.graphics = graphics;
				next = graphics.stackTop;
				graphics.stackTop = this;

				// Save the graphics state information.
				clip = graphics.Clip;
				if(clip != null)
				{
					clip = clip.Clone();
				}
				compositingMode = graphics.CompositingMode;
				compositingQuality = graphics.CompositingQuality;
				interpolationMode = graphics.InterpolationMode;
				pageScale = graphics.PageScale;
				pageUnit = graphics.PageUnit;
				pixelOffsetMode = graphics.PixelOffsetMode;
				renderingOrigin = graphics.RenderingOrigin;
				smoothingMode = graphics.SmoothingMode;
				textContrast = graphics.TextContrast;
				textRenderingHint = graphics.TextRenderingHint;
				if (graphics.transform == null)
				{
					transform = null;
				}
				else
				{
					transform = Matrix.Clone(graphics.transform);
				}
			}
コード例 #2
0
        public GraphicsQualityManager(Graphics g, bool setHighQuality = true)
        {
            this.g = g;

            previousCompositingQuality = g.CompositingQuality;
            previousInterpolationMode = g.InterpolationMode;
            previousSmoothingMode = g.SmoothingMode;

            if (setHighQuality)
            {
                SetHighQuality();
            }
        }
コード例 #3
0
	// Constructor.
	protected ToolkitGraphicsBase(IToolkit toolkit)
			{
				this.toolkit = toolkit;
				clip = null;
				compositingMode = CompositingMode.SourceOver;
				compositingQuality = CompositingQuality.Default;
				interpolationMode = InterpolationMode.Default;
				pixelOffsetMode = PixelOffsetMode.Default;
				renderingOrigin = new Point(0, 0);
				smoothingMode = SmoothingMode.Default;
				textContrast = 4;
				textRenderingHint = TextRenderingHint.SystemDefault;
				dirtyFlags = DirtyFlags.All;
			}
コード例 #4
0
 public void 缩放图像Test()
 {
     Image 图像 = null; // TODO: 初始化为适当的值
     int 指定宽度 = 0; // TODO: 初始化为适当的值
     int 指定高度 = 0; // TODO: 初始化为适当的值
     缩放方式 缩放方式 = new 缩放方式(); // TODO: 初始化为适当的值
     InterpolationMode 插值算法 = new InterpolationMode(); // TODO: 初始化为适当的值
     SmoothingMode 平滑模式 = new SmoothingMode(); // TODO: 初始化为适当的值
     CompositingQuality 合成质量 = new CompositingQuality(); // TODO: 初始化为适当的值
     Bitmap expected = null; // TODO: 初始化为适当的值
     Bitmap actual;
     actual = Drawing处理函数.缩放图像(图像, 指定宽度, 指定高度, 缩放方式, 插值算法, 平滑模式, 合成质量);
     Assert.AreEqual(expected, actual);
     Assert.Inconclusive("验证此测试方法的正确性。");
 }
コード例 #5
0
ファイル: ImageOperations.cs プロジェクト: an83/KinectTouch2
        private static Image Resize(Image originalImage, int newWidth, int newHeight, CompositingQuality compositingQuality, SmoothingMode smoothingMode, InterpolationMode interpolationMode, PixelOffsetMode pixelOffsetmode)
        {
            Image result = new Bitmap(newWidth, newHeight);
            using (var graphic = Graphics.FromImage(result))
            {
                graphic.CompositingQuality = compositingQuality;
                graphic.SmoothingMode = smoothingMode;
                graphic.InterpolationMode = interpolationMode;
                graphic.PixelOffsetMode = pixelOffsetmode;

                Rectangle rectangle = new Rectangle(0, 0, newWidth, newHeight);
                graphic.DrawImage(originalImage, rectangle);
                return result;
            }
        }
コード例 #6
0
        /// <summary>
        /// Initiates the Painting of the item
        /// </summary>
        /// <param name="e"></param>
        public override void Paint(ItemPaintArgs e)
        {
            Graphics g = e.Graphics;

            // Lets have it draw as best it can

            CompositingQuality comp = g.CompositingQuality;

            g.CompositingQuality = CompositingQuality.HighQuality;

            // Draw the border and content area

            DrawBorder(g);
            DrawContent(g);

            // Set our CompostingQuality back

            g.CompositingQuality = comp;
        }
コード例 #7
0
        /// <summary>
        /// 重设Bitmap图片大小
        /// </summary>
        /// <param name="bm"></param>
        /// <param name="w">宽</param>
        /// <param name="h">高</param>
        /// <param name="interpolationMode"></param>
        /// <param name="smoothingMode"></param>
        /// <param name="compositingQuality"></param>
        /// <returns></returns>
        public static Bitmap SetSize(this Bitmap bm, int w, int h,
                                     InterpolationMode interpolationMode   = InterpolationMode.HighQualityBicubic,
                                     SmoothingMode smoothingMode           = SmoothingMode.HighQuality,
                                     CompositingQuality compositingQuality = CompositingQuality.HighSpeed
                                     )
        {
            int    nowWidth  = w;
            int    nowHeight = h;
            Bitmap newbm     = new Bitmap(nowWidth, nowHeight);//新建一个放大后大小的图片

            Graphics g = Graphics.FromImage(newbm);

            g.InterpolationMode  = interpolationMode;
            g.SmoothingMode      = smoothingMode;
            g.CompositingQuality = compositingQuality;
            g.DrawImage(bm, new Rectangle(0, 0, nowWidth, nowHeight), new Rectangle(0, 0, bm.Width, bm.Height), GraphicsUnit.Pixel);
            g.Dispose();
            return(newbm);
        }
コード例 #8
0
        /// <summary>
        /// Affichage
        /// </summary>
        /// <param name="g"></param>
        /// <param name="maintenant"></param>
        /// <param name="tailleEcran"></param>
        /// <param name="couleur"></param>
        public override void AfficheGDI(Graphics g, Temps maintenant, Rectangle tailleEcran, Color couleur)
        {
#if TRACER
            RenderStart(CHRONO_TYPE.RENDER);
#endif
            g.Clear(getCouleurOpaqueAvecAlpha(couleur, ALPHA));

            SmoothingMode s = g.SmoothingMode;
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;

            CompositingQuality q = g.CompositingQuality;
            g.CompositingQuality = CompositingQuality.HighSpeed;

            if (AFFICHE_FOND)
            {
                g.DrawImage(_fond, 0, HAUTEUR - HAUTEUR_TOUFFE * 4, LARGEUR, HAUTEUR_TOUFFE * 4);
            }

            g.DrawImage(_soleil, _xSoleil - TAILLE_SOLEIL / 2, _ySoleil - TAILLE_SOLEIL / 2, TAILLE_SOLEIL, TAILLE_SOLEIL);

            foreach (Herbe h in _herbes)
            {
                h.Affiche(g, _vent);
            }

            float dx = CENTREX - _xSoleil;
            float dy = CENTREY - _ySoleil;

            foreach (Flare f in _flares)
            {
                DrawBitmapNuance(g, f._bmp, _xSoleil + dx * f._distance - f._taille / 2,
                                 _ySoleil + dy * f._distance - f._taille / 2,
                                 f._taille,
                                 f._taille, getCouleurAvecAlpha(couleur, f._alpha));
            }
            g.SmoothingMode      = s;
            g.CompositingQuality = q;

#if TRACER
            RenderStop(CHRONO_TYPE.RENDER);
#endif
        }
コード例 #9
0
 /// <summary>
 /// sets The quality of the drawing to the given graphics.
 /// </summary>
 /// <param name="e">The Graphics to set the quality</param>
 /// <param name="smoothingMode">Gets or sets the rendering quality for this System.Drawing.Graphics.</param>
 /// <param name="textRenderingHint"></param>
 /// <param name="pixelOffsetMode">Gets or set a value specifying how pixels are offset during rendering of this </param>
 /// <param name="interpolationMode">Gets or sets the interpolation mode associated with this System.Drawing.Graphics.</param>
 /// <param name="compositingQuality">Gets or sets the rendering quality of composited images drawn to this System.Drawing.Graphics.</param>
 public void SetQuality(Graphics e,
                        SmoothingMode smoothingMode           = SmoothingMode.Default,
                        TextRenderingHint textRenderingHint   = TextRenderingHint.ClearTypeGridFit,
                        PixelOffsetMode pixelOffsetMode       = PixelOffsetMode.Default,
                        InterpolationMode interpolationMode   = InterpolationMode.Default,
                        CompositingQuality compositingQuality = CompositingQuality.Default)
 {
     try
     {
         e.SmoothingMode      = smoothingMode;
         e.PixelOffsetMode    = pixelOffsetMode;
         e.InterpolationMode  = interpolationMode;
         e.CompositingQuality = compositingQuality;
         e.TextRenderingHint  = textRenderingHint;
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.StackTrace);
     }
 }
コード例 #10
0
ファイル: Utils.cs プロジェクト: eakova/resizer
        public static Bitmap GdiResize(Image photo, int width, int height,
            InterpolationMode interpolationMode = InterpolationMode.HighQualityBicubic,
            SmoothingMode smoothingMode = SmoothingMode.HighQuality,
            PixelOffsetMode pixelMode = PixelOffsetMode.HighQuality,
            CompositingQuality compositingQuality = CompositingQuality.HighQuality,
            CompositingMode compositingMode = CompositingMode.SourceOver
            )
        {
            var resized = new Bitmap(width, height);
            using (var graphics = Graphics.FromImage(resized)) {
                graphics.CompositingQuality = compositingQuality;
                graphics.InterpolationMode = interpolationMode;
                graphics.CompositingMode = compositingMode;
                graphics.SmoothingMode = smoothingMode;
                graphics.PixelOffsetMode = pixelMode;

                graphics.DrawImage(photo, 0, 0, width, height);
            }
            return resized;
        }
コード例 #11
0
        /// <summary>
        /// Resizes the image.
        /// </summary>
        /// <param name="self">The self.</param>
        /// <param name="newSize">The new size.</param>
        /// <param name="compositingQuality">The compositing quality.</param>
        /// <param name="interpolationMode">The interpolation mode.</param>
        /// <param name="smoothingMode">The smoothing mode.</param>
        /// <returns>A resized bitmap.</returns>
        public static Bitmap Resize(
            this Image self,
            Size newSize,
            CompositingQuality compositingQuality = CompositingQuality.Default,
            InterpolationMode interpolationMode   = InterpolationMode.Default,
            SmoothingMode smoothingMode           = SmoothingMode.Default)
        {
            var result = new Bitmap(newSize.Width, newSize.Height);

            using (Graphics graphics = Graphics.FromImage(result))
            {
                graphics.CompositingQuality = compositingQuality;
                graphics.InterpolationMode  = interpolationMode;
                graphics.SmoothingMode      = smoothingMode;

                graphics.DrawImage(self, new Rectangle(0, 0, result.Width, result.Height));
            }

            return(result);
        }
コード例 #12
0
        public static Bitmap GdiResize(Image photo, int width, int height,
                                       InterpolationMode interpolationMode   = InterpolationMode.HighQualityBicubic,
                                       SmoothingMode smoothingMode           = SmoothingMode.HighQuality,
                                       PixelOffsetMode pixelMode             = PixelOffsetMode.HighQuality,
                                       CompositingQuality compositingQuality = CompositingQuality.HighQuality,
                                       CompositingMode compositingMode       = CompositingMode.SourceOver
                                       )
        {
            var resized = new Bitmap(width, height);

            using (var graphics = Graphics.FromImage(resized)) {
                graphics.CompositingQuality = compositingQuality;
                graphics.InterpolationMode  = interpolationMode;
                graphics.CompositingMode    = compositingMode;
                graphics.SmoothingMode      = smoothingMode;
                graphics.PixelOffsetMode    = pixelMode;

                graphics.DrawImage(photo, 0, 0, width, height);
            }
            return(resized);
        }
コード例 #13
0
        public static Stream Resize(int width, Stream imageStream, CompositingQuality compositingQuality, SmoothingMode smoothingMode, InterpolationMode interpolationMode)
        {
            var image = Image.FromStream(imageStream);

            var thumbnailSize = width;
            int newWidth, newHeight;

            if (image.Width > image.Height)
            {
                newWidth  = thumbnailSize;
                newHeight = image.Height * thumbnailSize / image.Width;
            }
            else
            {
                newWidth  = image.Width * thumbnailSize / image.Height;
                newHeight = thumbnailSize;
            }

            var bitmap = new Bitmap(newWidth, newHeight);

            var graphic = Graphics.FromImage(bitmap);

            graphic.CompositingQuality = compositingQuality;
            graphic.SmoothingMode      = smoothingMode;
            graphic.InterpolationMode  = interpolationMode;

            var rectangle = new Rectangle(0, 0, newWidth, newHeight);

            graphic.DrawImage(image, rectangle);

            var resizedStream = new MemoryStream();

            bitmap.Save(resizedStream, ImageFormat.Png);

            graphic.Dispose();
            bitmap.Dispose();
            image.Dispose();

            return(resizedStream);
        }
コード例 #14
0
        public static Metafile CreateMetafile(
            this BitmapSource bitmap, 
            double horizontalScale = 1.0,
            double verticalScale = 1.0,
            EmfType emf = EmfType.EmfOnly,
            SmoothingMode smoothingMode = SmoothingMode.HighQuality,
            InterpolationMode interpolationMode = InterpolationMode.HighQualityBicubic,
            PixelOffsetMode pixelOffsetMode = PixelOffsetMode.HighQuality,
            CompositingQuality compositingQuality = CompositingQuality.HighQuality)
        {
            var mf = (Metafile)null;

            using (System.Drawing.Graphics cx = System.Drawing.Graphics.FromHwndInternal(IntPtr.Zero))
            {
                mf = new Metafile(new MemoryStream(), cx.GetHdc(), emf);

                using (var g = System.Drawing.Graphics.FromImage(mf))
                {
                    var img = bitmap.ToBitmap();

                    g.SmoothingMode = smoothingMode;
                    g.InterpolationMode = interpolationMode;
                    g.PixelOffsetMode = pixelOffsetMode;
                    g.CompositingQuality = compositingQuality;

                    var rect =
                        new System.Drawing.RectangleF(
                            0,
                            0,
                            img.PhysicalDimension.Width * (float)horizontalScale,
                            img.PhysicalDimension.Height * (float)verticalScale);

                    g.DrawImage(img, rect);
                }
            }

            return mf;
        }
コード例 #15
0
ファイル: ImageHelper.cs プロジェクト: wernervn/media-apps
        public static byte[] ReduceImageSize(byte[] inputImage, CompositingQuality compositingQuality = CompositingQuality.HighQuality, SmoothingMode smoothingMode = SmoothingMode.HighQuality, InterpolationMode interpolationMode = InterpolationMode.High)
        {
            var outputImage = Array.Empty <byte>();

            if (Debugger.IsAttached && (inputImage is null || inputImage.Length == 0))
            {
                Debugger.Break();
            }

            try
            {
                var image = Image.FromStream(new MemoryStream(inputImage));

                var desiredWidth  = image.Width;
                var desiredHeight = image.Height;

                var bmp = new Bitmap(desiredWidth, desiredHeight);
                using var grfx          = Graphics.FromImage(bmp);
                grfx.CompositingQuality = compositingQuality;
                grfx.SmoothingMode      = smoothingMode;
                grfx.InterpolationMode  = interpolationMode;

                var rectangle = new Rectangle(0, 0, desiredWidth, desiredHeight);
                grfx.DrawImage(image, rectangle);

                // make a memory stream to work with the image bytes
                using var imageStream = new MemoryStream();
                bmp.Save(imageStream, ImageFormat.Jpeg);
                outputImage = imageStream.ToArray();
                bmp.Dispose();
                image.Dispose();
            }
            catch
            {
                //return null when the input is an invalid image
            }
            return(outputImage);
        }
コード例 #16
0
        public static Image ReDraw(this Image main, int w, int h,
                                   CompositingQuality quality   = CompositingQuality.Default, //linear?
                                   SmoothingMode smoothing_mode = SmoothingMode.None,
                                   InterpolationMode ip_mode    = InterpolationMode.NearestNeighbor)
        {
            //size
            double dbl = (double)main.Width / (double)main.Height;

            //preserve size ratio
            if ((int)((double)h * dbl) <= w)
            {
                w = (int)((double)h * dbl);
            }
            else
            {
                h = (int)((double)w / dbl);
            }

            //draw
            Image newImage = new System.Drawing.Bitmap(w, h);

            using (Graphics gfx = Graphics.FromImage(newImage))
            {
                gfx.CompositingQuality = quality;
                gfx.SmoothingMode      = smoothing_mode;
                gfx.InterpolationMode  = ip_mode;
                gfx.PixelOffsetMode    = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                gfx.Clear(Color.Transparent);

                gfx.DrawImage(main,
                              new System.Drawing.Rectangle(0, 0, w, h),
                              new System.Drawing.Rectangle(0, 0, main.Width, main.Height),
                              System.Drawing.GraphicsUnit.Pixel);
            }

            return(newImage);
        }
コード例 #17
0
        protected override void OnPaint(PaintEventArgs e)
        {
            Rectangle imageBounds = Rectangle.Empty;

            imageBounds.Size = _increaseSize ? _maxSize.Size : _minSize.Size;

            Image img = _increaseSize ? Properties.Resources.GreenCircle_27x27 : Properties.Resources.TanCircle_27x27;

            imageBounds.Location = new Point(
                (ClientRectangle.Width - imageBounds.Width) / 2,
                (ClientRectangle.Height - imageBounds.Height) / 2);

            CompositingQuality compositingQuality = e.Graphics.CompositingQuality;
            InterpolationMode  interpolationMode  = e.Graphics.InterpolationMode;
            SmoothingMode      smoothingMode      = e.Graphics.SmoothingMode;

            e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
            e.Graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
            e.Graphics.SmoothingMode      = SmoothingMode.HighQuality;
            e.Graphics.DrawImage(img, imageBounds);
            e.Graphics.CompositingQuality = compositingQuality;
            e.Graphics.InterpolationMode  = interpolationMode;
            e.Graphics.SmoothingMode      = smoothingMode;
        }
コード例 #18
0
ファイル: Metaballes.cs プロジェクト: lu1u/ClockScreensaverGL
        /// <summary>
        /// Affiche l'objet
        /// </summary>
        /// <param name="g"></param>
        /// <param name="maintenant"></param>
        /// <param name="tailleEcran"></param>
        /// <param name="couleur"></param>
        ///
#if USE_GDI_PLUS_FOR_2D
        public override void AfficheGDI(Graphics g, Temps maintenant, Rectangle tailleEcran, Color couleur)
        {
#if TRACER
            RenderStart(CHRONO_TYPE.RENDER);
#endif
            // Mise a jour de la palette de couleurs
            updatePalette(couleur);

            // Construire la bitmap
            updateFrame();
            SmoothingMode      q = g.SmoothingMode;
            CompositingQuality c = g.CompositingQuality;
            InterpolationMode  m = g.InterpolationMode;
            g.SmoothingMode      = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
            g.CompositingQuality = CompositingQuality.HighSpeed;
            g.InterpolationMode  = InterpolationMode.NearestNeighbor;
            g.DrawImage(_bmp, 0, 0, tailleEcran.Width, tailleEcran.Height);
            g.SmoothingMode      = q;
            g.CompositingQuality = c;
            g.InterpolationMode  = m;
#if TRACER
            RenderStop(CHRONO_TYPE.RENDER);
#endif
        }
コード例 #19
0
		internal GraphicsState(Graphics graphics, Matrix matrix, bool resetState)
		{
			_compositingMode = graphics.CompositingMode;
			_compositingQuality = graphics.CompositingQuality;
			_clip = graphics.ScaledClip;
			_baseClip = graphics.NativeObject.getClip();
			_interpolationMode = graphics.InterpolationMode;
			_pageScale = graphics.PageScale;
			_pageUnit = graphics.PageUnit;
			_pixelOffsetMode = graphics.PixelOffsetMode;
			
			// FIXME: render orign is not implemented yet
			//_renderingOrigin = new Point( g.RenderingOrigin.X, g.RenderingOrigin.Y );

			_smoothingMode = graphics.SmoothingMode;
			_transform = graphics.Transform;
			_baseTransform = graphics.BaseTransform;

			_textContrast = graphics.TextContrast;
			_textRenderingHint = graphics.TextRenderingHint;

			if (resetState)
				ResetState(graphics, matrix);
		}
コード例 #20
0
        /// <summary>
        /// Initiates the Painting of the item
        /// </summary>
        /// <param name="e"></param>
        public override void Paint(ItemPaintArgs e)
        {
            Graphics g = e.Graphics;

            // Lets have it draw as best it can

            CompositingQuality comp = g.CompositingQuality;

            g.CompositingQuality = CompositingQuality.HighQuality;

            // The color scheme used is based on whether
            // the CheckBox is checked or not

            int scheme = _CheckBox.Checked ? 0 : 1;

            // Draw the border and content area

            DrawBorder(e, scheme);
            DrawContent(e, scheme);

            // Set our CompostingQuality back

            g.CompositingQuality = comp;
        }
コード例 #21
0
        /// <summary>
        /// Private method that takes an image file name and rescales it so that it's largest edge is equal 
        /// to the one supplied.
        /// </summary>
        private void CreateThumbnailForImage(string thumbnailFilePath, string originalFilePath, int maxEdge, CompositingQuality compositingQuality)
        {
            // Load the existing image.
              Image original = Image.FromFile(originalFilePath);

              // The math for calculating the correct sizes.
              float aspect = (float)original.Width / (float)original.Height;
              int width = (original.Width > original.Height) ? maxEdge : (int)(maxEdge * aspect);
              int height = (original.Height > original.Width) ? maxEdge : (int)(maxEdge / aspect);

              // Code to rescale the image.
              Bitmap thumbnail = new Bitmap(width, height);
              using (Graphics graphics = Graphics.FromImage(thumbnail))
              {
            graphics.CompositingQuality = compositingQuality;
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.CompositingMode = CompositingMode.SourceCopy;
            graphics.DrawImage(original, 0, 0, width, height);
            thumbnail.Save(thumbnailFilePath, ImageFormat.Jpeg);
              }
        }
コード例 #22
0
 public void setCompositeQuality(CompositingQuality compositeQuality)
 {
     this.compositeQuality = compositeQuality;
 }
コード例 #23
0
		private void PostBack()
		{
			string cPath = curPath + "\\";
			try
			{
				if (Request.Form["txtFolderName"] != null)
				{
					#region Создать папку

					if (Request.Form["txtFolderName"].Trim().Length > 0)
					{
						if(!Directory.Exists((cPath + Request.Form["txtFolderName"])))
						{
							Directory.CreateDirectory((cPath + Request.Form["txtFolderName"]));
						}
					}

					#endregion
				}
				else if (Request.Files.Count > 0)
				{
					if (Request.Form["hReplace"] == null)
					{
						#region Загрузка архива
						HttpPostedFile pf = Request.Files[0];
						if (pf.FileName.Length > 0)
						{
							using (ZipInputStream s = new ZipInputStream(pf.InputStream))
							{
								ZipEntry theEntry;
								while ((theEntry = s.GetNextEntry()) != null)
								{

									string directoryName = Request.MapPath(sCurPath + "/" + Path.GetDirectoryName(theEntry.Name));
									string fileName = Path.GetFileName(theEntry.Name);
									//Hashtable ht = new Hashtable();
									//ht["name"] = theEntry.Name;
									//ht["directoryName"] = directoryName;
									//ht["fileName"] = fileName;
									//Log.Write("entry", ht);
									//continue;
									// create directory
									
									if (directoryName.Length > 0)
									{
										Directory.CreateDirectory(directoryName);
									}

									if (fileName != String.Empty)
									{
										using (FileStream streamWriter = File.Create(directoryName + "\\" + fileName))
										{

											int size = 2048;
											byte[] data = new byte[2048];
											while (true)
											{
												size = s.Read(data, 0, data.Length);
												if (size > 0)
												{
													streamWriter.Write(data, 0, size);
												}
												else
												{
													break;
												}
											}
										}
									}
								}
							}
						}
						#endregion
					}
					else
					{
						#region Загрузка файла

						HttpPostedFile pf = Request.Files[0];
						if (pf.FileName.Length > 0)
						{
							//получение имени файла
							string[] af = pf.FileName.Split('\\');
							string file = af[af.Length - 1];

							//проверка типа файла
							bool wrongType = false;
							if (sFilter != "*")
							{
								wrongType = true;
								string[] arFilter = sFilter.ToLower().Split(';');
								string ext = this.GetExtention(file).ToLower();
								foreach (string fe in arFilter)
									if (ext == fe)
									{
										wrongType = false;
										break;
									}
							}
							if (!wrongType)
							{
								//создание уникального имени
								if (Request.Form["hReplace"] != "1")
								{
									int i = 0;
									while (File.Exists(cPath + file))
									{
										i++;
										file = i + file;
									}
								}
								//сохранение
								pf.SaveAs(cPath + file);
							}
							else
							{
								throw new Exception("Wrong file type.");
							}
						}

						#endregion
					}
				}
				else if (Request.Form["txtNewName"] != null
					&& Request.Form["txtOldName"] != null
					&& Request.Form["txtPreviewW"] != null
					&& Request.Form["txtPreviewH"] != null)
				{
					#region Сохранение с новым размером

					if (Request.Form["txtNewName"].Trim().Length > 0
						&& Request.Form["txtOldName"].Trim().Length > 0
						&& Request.Form["txtPreviewW"].Trim().Length > 0
						&& Request.Form["txtPreviewH"].Trim().Length > 0
						)
					{
						ImageFormat imageFormat = ImageFormat.Png;
						string sOldFile = Request.Form["txtOldName"].Trim();
						string sNewFile = Request.Form["txtNewName"].Trim();
						int nWidth = int.Parse(Request.Form["txtPreviewW"]);
						int nHeigth = int.Parse(Request.Form["txtPreviewH"]);
						string ext = GetExtention(sNewFile).ToLower();
						switch (ext)
						{
							case "gif":
								imageFormat = ImageFormat.Gif;
								break;
							case "jpg":
							case "jpeg":
								imageFormat = ImageFormat.Jpeg;
								break;
							case "png":
								imageFormat = ImageFormat.Png;
								break;
							case "bmp":
								imageFormat = ImageFormat.Bmp;
								break;
							default:
								sNewFile += ".png";
								break;
						}
						Bitmap bitmap			= null;
						Image image				= null;
						Graphics gr				= null;
						SmoothingMode sm		= (SmoothingMode)Enum.Parse(typeof(SmoothingMode), Request.Form["cmbSmoothingMode"], true);
						CompositingQuality cq	= (CompositingQuality)Enum.Parse(typeof(CompositingQuality), Request.Form["cmbCompositingQuality"], true);
						try
						{
							bitmap = new Bitmap(cPath + sOldFile);
							image = new Bitmap(nWidth, nHeigth);
							gr = Graphics.FromImage(image);
							gr.SmoothingMode = sm;
							gr.CompositingQuality = cq;
							gr.DrawImage(bitmap, 0, 0, nWidth, nHeigth);
							bitmap.Dispose();
							gr.Dispose();
							while (File.Exists(cPath + sNewFile))
							{
								sNewFile = "0" + sNewFile;
							}
							image.Save(cPath + sNewFile, imageFormat);
						}
						finally
						{
							if (gr != null)
								gr.Dispose();
							if (bitmap != null)
								bitmap.Dispose();
							if (image != null)
								image.Dispose();
						}
					}

					#endregion	
				}
				else if (Request.Form["txtFileName"] != null)
				{
					#region Создание файла

					string file = Request.Form["txtFileName"].Trim();
					if (Request.Form["cmbFileType"] == "*")
					{
						if(Request.Form["hReplace"]!="1")
						{
							int i=0;
							while (File.Exists(cPath + file))
							{
								i++;
								file = i + file;
							}
						}
						File.Create(cPath + file).Close();
					}
					else
					{
						string content = "";
						string cext = Request.Form["cmbFileType"].Split('-')[0];
						file = file + "." + cext;
						if(Request.Form["hReplace"]!="1")
						{
							int i=0;
							while (File.Exists(cPath + file))
							{
								i++;
								file = i + file;
							}
						}
						DataRow[] rows = tbTemplates.Select("id like '*;" + Request.Form["cmbFileType"] + ";*'");
						if (rows.Length > 0)
						{
							content = rows[0]["content"].ToString();

						}
						Encoding enc = Encoding.Default;
						if (IsXmlFile(file))
							enc = Encoding.UTF8;
						StreamWriter sw = null;
						try
						{
							sw = new StreamWriter(cPath + file, false, enc);
							sw.Write(content);
						}
						finally
						{
							if (sw != null)
								sw.Close();
						}
					}

					#endregion
				}
				else if (Request.Form["act"] == "delete")
				{
					#region Удаление файла

					string file = Request.MapPath(Request.Form["hFile"]).ToLower();
					if (File.Exists(file))
					{
						bool allowed = false;
						DataTable tb = Config.GetConfigTable("delete.config","folder");
						for(int i=0;i<tb.Rows.Count;i++)
						{
							string folder = Request.MapPath(tb.Rows[i]["name"].ToString()).ToLower();
							if(file.StartsWith(folder))
							{
								allowed = tb.Rows[i]["allow"].ToString()=="1";
								if(!allowed)
								{
									break;
								}
							}
						}
						if(allowed)
						{
							File.Delete(file);
						}
						else
						{
							throw new UnauthorizedAccessException("Удаление запрещено!");
						}
					}

					#endregion
				}
				else if (Request.Form["act"] == "deletefolder")
				{
					#region Удаление папки

					string folder = Request.MapPath(Request.Form["hFolder"]);
					if (Directory.Exists(folder))
					{
						if(Directory.GetFileSystemEntries(folder).Length>0)
						{
							Directory.Delete(folder);
						}
					}
					#endregion
				}
				Response.Redirect(Sota.Web.SimpleSite.Path.Full);
			}
			catch (Exception ex)
			{
				sError = ex.Message;
			}
		}
コード例 #24
0
        /// <summary><inheritdoc cref="Resize(Bitmap, int, int, int, int, CompositingMode, CompositingQuality, InterpolationMode, SmoothingMode, PixelOffsetMode, WrapMode)"/> Final result represents the <see cref="Bitmap"/> upscaled to the largest relative resolution, cropped to fit. </summary>
        /// <param name="Bmp">The BMP.</param>
        /// <param name="RequestedWidth">The requested width.</param>
        /// <param name="RequestedHeight">The requested height.</param>
        /// <param name="Format">The resultant image format</param>
        /// <param name="CompositingMode">The compositing mode.</param>
        /// <param name="CompositingQuality">The compositing quality.</param>
        /// <param name="InterpolationMode">The interpolation mode.</param>
        /// <param name="SmoothingMode">The smoothing mode.</param>
        /// <param name="PixelOffsetMode">The pixel offset mode.</param>
        /// <param name="WrapMode">The wrap mode.</param>
        /// <returns><see cref="Bitmap"/></returns>
        public static Bitmap ResizeToFill(this Bitmap Bmp, int RequestedWidth, int RequestedHeight, PixelFormat Format = PixelFormat.Format24bppRgb, CompositingMode CompositingMode = CompositingMode.SourceCopy, CompositingQuality CompositingQuality = CompositingQuality.HighQuality, InterpolationMode InterpolationMode = InterpolationMode.HighQualityBicubic, SmoothingMode SmoothingMode = SmoothingMode.HighQuality, PixelOffsetMode PixelOffsetMode = PixelOffsetMode.HighQuality, WrapMode WrapMode = WrapMode.TileFlipXY)
        {
            //Store original sizes to prevent multiple getter calls.
            int BmpWidth  = Bmp.Width;
            int BmpHeight = Bmp.Height;

            //Find the (up/down)scaling ratios and pick the largest one.
            //We do this since we want to scale to the largest fit size and crop the excess,
            //  instead of scaling to possibly the lower size and needing stretch out one dimension.
            float RatioA = (float)RequestedWidth / BmpWidth;
            float RatioB = (float)RequestedHeight / BmpHeight;
            float Ratio  = RatioA > RatioB ? RatioA : RatioB;

            //Find the final (up/down)scaled size by multiplying the original size by the largest ratio.
            int FinalWidth  = (BmpWidth * Ratio).CeilToWhole();
            int FinalHeight = (BmpHeight * Ratio).CeilToWhole();

            //Find the center offsets
            int OffsetX = ((FinalWidth - RequestedWidth) / 2.0f).CeilToWhole();
            int OffsetY = ((FinalHeight - RequestedHeight) / 2.0f).CeilToWhole();

            //Resize the original bitmap to the largest possible fitting size.
            Bitmap Resized = Bmp.Resize(FinalWidth, FinalHeight, 0, 0, CompositingMode, CompositingQuality, InterpolationMode, SmoothingMode, PixelOffsetMode, WrapMode);

            //Determine the final dimensions and crop the resized bitmap to them. Return it.
            Rectangle FinalDimensions = new Rectangle(OffsetX, OffsetY, RequestedWidth, RequestedHeight);

            return(Resized.Clone(FinalDimensions, Format));
        }
コード例 #25
0
ファイル: Gdiplus.cs プロジェクト: JianwenSun/cc
 internal static extern int GdipGetCompositingQuality(HandleRef graphics, out CompositingQuality quality);
コード例 #26
0
        /// <summary>
        /// 将图像调整到指定尺寸
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="缩放尺寸">目标尺寸</param>
        /// <param name="插值算法">插值算法</param>
        /// <param name="平滑模式">平滑模式</param>
        /// <param name="合成质量">合成质量</param>
        /// <returns>调整后的图像</returns>
        public static Bitmap 缩放图像(this Image 图像, Size 缩放尺寸, InterpolationMode 插值算法, SmoothingMode 平滑模式, CompositingQuality 合成质量)
        {
            Bitmap   resizedBmp = new Bitmap(缩放尺寸.Width, 缩放尺寸.Height);
            Graphics g          = Graphics.FromImage(resizedBmp);

            g.InterpolationMode  = 插值算法;
            g.SmoothingMode      = 平滑模式;
            g.CompositingQuality = 合成质量;
            g.DrawImage(图像, new Rectangle(0, 0, 缩放尺寸.Width, 缩放尺寸.Height), new Rectangle(0, 0, 图像.Width, 图像.Height), GraphicsUnit.Pixel);
            return(resizedBmp);
        }
コード例 #27
0
ファイル: Graphics.cs プロジェクト: mitice/foo
 GdipGetCompositingQuality(GpGraphics graphics,
                           out CompositingQuality compositingQuality);
コード例 #28
0
 /// <summary>
 /// Creates a new instance using the specified settings.
 /// </summary>
 /// <param name="compositingQuality"></param>
 /// <param name="interpolationMode"></param>
 /// <param name="pixelOffsetMode"></param>
 /// <param name="smoothingMode"></param>
 /// <param name="textRenderingHint"></param>
 /// <param name="textContrast"></param>
 internal GraphicsSettings(
         CompositingQuality compositingQuality,
         InterpolationMode interpolationMode,
         PixelOffsetMode pixelOffsetMode,
         SmoothingMode smoothingMode,
         TextRenderingHint textRenderingHint,
         int textContrast)
 {
     _compositingQuality = compositingQuality;
     _interpolationMode = interpolationMode;
     _pixelOffsetMode = pixelOffsetMode;
     _smoothingMode = smoothingMode;
     _textContrast = textContrast;
     _textRenderingHint = textRenderingHint;
 }
コード例 #29
0
 public DrawingSettings(SmoothingMode smoothingMode, TextRenderingHint textRenderingHint, PixelOffsetMode pixelOffsetMode, CompositingQuality composingQuality, InterpolationMode interpolationMode)
 {
     this.SmoothingMode      = smoothingMode;
     this.TextRenderingHint  = textRenderingHint;
     this.PixelOffsetMode    = pixelOffsetMode;
     this.CompositingQuality = composingQuality;
     this.InterpolationMode  = interpolationMode;
 }
コード例 #30
0
ファイル: Graphics.cs プロジェクト: misiek/foo
 public static extern GpStatus GdipSetCompositingQuality(GpGraphics graphics,
    CompositingQuality compositingQuality);
コード例 #31
0
 private void PaintCellImage(ChartGraphics chartGraph, int fontSizeReducedBy, Font legendAutoFont, Size singleWCharacterSize, PointF animationLocationAdjustment)
 {
     if (this.Image.Length > 0)
     {
         Rectangle empty = Rectangle.Empty;
         Image     image = this.GetLegend().Common.ImageLoader.LoadImage(this.Image);
         SizeF     sizeF = default(SizeF);
         ImageLoader.GetAdjustedImageSize(image, chartGraph.Graphics, ref sizeF);
         empty.Width  = (int)sizeF.Width;
         empty.Height = (int)sizeF.Height;
         Rectangle rectangle = this.cellPosition;
         rectangle.Width  = empty.Width;
         rectangle.Height = empty.Height;
         if (!this.ImageSize.IsEmpty)
         {
             if (this.ImageSize.Width > 0)
             {
                 int num = (int)((float)(this.ImageSize.Width * singleWCharacterSize.Width) / 100.0);
                 if (num > this.cellPosition.Width)
                 {
                     num = this.cellPosition.Width;
                 }
                 rectangle.Width = num;
             }
             if (this.ImageSize.Height > 0)
             {
                 int num2 = (int)((float)(this.ImageSize.Height * singleWCharacterSize.Height) / 100.0);
                 if (num2 > this.cellPosition.Height)
                 {
                     num2 = this.cellPosition.Height;
                 }
                 rectangle.Height = num2;
             }
         }
         float num3 = 1f;
         if (empty.Height > rectangle.Height)
         {
             num3 = (float)empty.Height / (float)rectangle.Height;
         }
         if (empty.Width > rectangle.Width)
         {
             num3 = Math.Max(num3, (float)empty.Width / (float)rectangle.Width);
         }
         empty.Height = (int)((float)empty.Height / num3);
         empty.Width  = (int)((float)empty.Width / num3);
         empty.X      = (int)((float)this.cellPosition.X + (float)this.cellPosition.Width / 2.0 - (float)empty.Width / 2.0);
         empty.Y      = (int)((float)this.cellPosition.Y + (float)this.cellPosition.Height / 2.0 - (float)empty.Height / 2.0);
         if (this.Alignment == ContentAlignment.BottomLeft || this.Alignment == ContentAlignment.MiddleLeft || this.Alignment == ContentAlignment.TopLeft)
         {
             empty.X = this.cellPosition.X;
         }
         else if (this.Alignment == ContentAlignment.BottomRight || this.Alignment == ContentAlignment.MiddleRight || this.Alignment == ContentAlignment.TopRight)
         {
             empty.X = this.cellPosition.Right - empty.Width;
         }
         if (this.Alignment == ContentAlignment.BottomCenter || this.Alignment == ContentAlignment.BottomLeft || this.Alignment == ContentAlignment.BottomRight)
         {
             empty.Y = this.cellPosition.Bottom - empty.Height;
         }
         else if (this.Alignment == ContentAlignment.TopCenter || this.Alignment == ContentAlignment.TopLeft || this.Alignment == ContentAlignment.TopRight)
         {
             empty.Y = this.cellPosition.Y;
         }
         ImageAttributes imageAttributes = new ImageAttributes();
         if (this.ImageTransparentColor != Color.Empty)
         {
             imageAttributes.SetColorKey(this.ImageTransparentColor, this.ImageTransparentColor, ColorAdjustType.Default);
         }
         SmoothingMode      smoothingMode      = chartGraph.SmoothingMode;
         CompositingQuality compositingQuality = chartGraph.Graphics.CompositingQuality;
         InterpolationMode  interpolationMode  = chartGraph.Graphics.InterpolationMode;
         chartGraph.SmoothingMode = SmoothingMode.AntiAlias;
         chartGraph.Graphics.CompositingQuality = CompositingQuality.HighQuality;
         chartGraph.Graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
         chartGraph.DrawImage(image, empty, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttributes);
         chartGraph.SmoothingMode = smoothingMode;
         chartGraph.Graphics.CompositingQuality = compositingQuality;
         chartGraph.Graphics.InterpolationMode  = interpolationMode;
     }
 }
コード例 #32
0
        public static System.Drawing.Drawing2D.CompositingQuality AsDrawingCompositingQuality(this CompositingQuality compositingQuality)
        {
            System.Drawing.Drawing2D.CompositingQuality drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            switch (compositingQuality)
            {
            case CompositingQuality.AssumeLinear:
                drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.AssumeLinear;
                break;

            case CompositingQuality.Default:
                drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.Default;
                break;

            case CompositingQuality.GammaCorrected:
                drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.GammaCorrected;
                break;

            case CompositingQuality.HighQuality:
                drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                break;

            case CompositingQuality.HighSpeed:
                drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
                break;

            case CompositingQuality.Invalid:
                drawingcompositingQuality = System.Drawing.Drawing2D.CompositingQuality.Invalid;
                break;

            default:
                break;
            }
            return(drawingcompositingQuality);
        }
コード例 #33
0
        /// <summary><inheritdoc cref="Resize(Bitmap, int, int, int, int, CompositingMode, CompositingQuality, InterpolationMode, SmoothingMode, PixelOffsetMode, WrapMode)"/> Final result represents the <see cref="Bitmap"/> stretched to the given dimensions. </summary>
        /// <param name="Bmp">The BMP.</param>
        /// <param name="MinWidth">The minimum width.</param>
        /// <param name="MinHeight">The minimum height.</param>
        /// <param name="CompositingMode">The compositing mode.</param>
        /// <param name="CompositingQuality">The compositing quality.</param>
        /// <param name="InterpolationMode">The interpolation mode.</param>
        /// <param name="SmoothingMode">The smoothing mode.</param>
        /// <param name="PixelOffsetMode">The pixel offset mode.</param>
        /// <param name="WrapMode">The wrap mode.</param>
        /// <returns><see cref="Bitmap"/></returns>
        public static Bitmap ResizeToStretch(this Bitmap Bmp, int MinWidth, int MinHeight, CompositingMode CompositingMode = CompositingMode.SourceCopy, CompositingQuality CompositingQuality = CompositingQuality.HighQuality, InterpolationMode InterpolationMode = InterpolationMode.HighQualityBicubic, SmoothingMode SmoothingMode = SmoothingMode.HighQuality, PixelOffsetMode PixelOffsetMode = PixelOffsetMode.HighQuality, WrapMode WrapMode = WrapMode.TileFlipXY)
        {
            int FinalHeight = (int)(Bmp.Width * ((double)MinHeight / MinWidth)).Ceil();

            return(Bmp.Resize(Bmp.Width, FinalHeight, 0, 0, CompositingMode, CompositingQuality, InterpolationMode, SmoothingMode, PixelOffsetMode, WrapMode));
        }
コード例 #34
0
        /// <summary>
        /// 将图像放大或缩小
        /// </summary>
        /// <param name="图像">源图像</param>
        /// <param name="指定宽度">指定的宽度,为0则保持原始值</param>
        /// <param name="指定高度">指定的高度,为0则保持原始值</param>
        /// <param name="缩放方式">缩放时采用的处理方式</param>
        /// <param name="插值算法">插值算法</param>
        /// <param name="平滑模式">平滑模式</param>
        /// <param name="合成质量">合成质量</param>
        /// <returns>缩放后的图像</returns>
        public static Bitmap 缩放图像(this Image 图像, int 指定宽度, int 指定高度, 缩放方式 缩放方式, InterpolationMode 插值算法, SmoothingMode 平滑模式, CompositingQuality 合成质量)
        {
            var s   = 计算缩放尺寸(缩放方式, 图像.Width, 图像.Height, 指定宽度, 指定高度);
            var img = 缩放图像(图像, s, 插值算法, 平滑模式, 合成质量);

            if (缩放方式 == 缩放方式.强制裁剪)
            {
                var tw = 指定宽度 == 0 ? 图像.Width : 指定宽度;
                var th = 指定高度 == 0 ? 图像.Height : 指定高度;
                img = 剪裁图像(img, new Point(img.Width / 2 - tw / 2, img.Height / 2 - th / 2), new Size(tw, th));
            }
            return(img);
        }
コード例 #35
0
ファイル: GdiPlus.cs プロジェクト: fossabot/ManagedIrbis2
 public static extern GdiPlusStatus GdipGetCompositingQuality
 (
     IntPtr graphics,
     out CompositingQuality compositingQuality
 );
コード例 #36
0
ファイル: Thumbs.cs プロジェクト: MediaPortal/MediaPortal-1
    private static void SetQualityParams(ThumbQuality quality_)
    {
      switch (quality_)
      {
        case ThumbQuality.fastest:
          _currentCompositingQuality = CompositingQuality.HighSpeed;
          _currentInterpolationMode = InterpolationMode.NearestNeighbor;
          _currentSmoothingMode = SmoothingMode.None;
          _currentThumbSize = ThumbSize.small;
          _currentLargeThumbSize = LargeThumbSize.small;
          break;

        case ThumbQuality.fast:
          _currentCompositingQuality = CompositingQuality.HighSpeed;
          _currentInterpolationMode = InterpolationMode.Low;
          _currentSmoothingMode = SmoothingMode.HighSpeed;
          _currentThumbSize = ThumbSize.small;
          _currentLargeThumbSize = LargeThumbSize.small;
          break;

        case ThumbQuality.higher:
          _currentCompositingQuality = CompositingQuality.AssumeLinear;
          _currentInterpolationMode = InterpolationMode.High;
          _currentSmoothingMode = SmoothingMode.HighQuality;
          _currentThumbSize = ThumbSize.average;
          _currentLargeThumbSize = LargeThumbSize.average;
          break;

        case ThumbQuality.highest:
          _currentCompositingQuality = CompositingQuality.HighQuality;
          _currentInterpolationMode = InterpolationMode.HighQualityBicubic;
          _currentSmoothingMode = SmoothingMode.HighQuality;
          _currentThumbSize = ThumbSize.large;
          _currentLargeThumbSize = LargeThumbSize.large;
          break;

        case ThumbQuality.uhd:
          _currentCompositingQuality = CompositingQuality.HighQuality;
          _currentInterpolationMode = InterpolationMode.HighQualityBicubic;
          _currentSmoothingMode = SmoothingMode.HighQuality;
          _currentThumbSize = ThumbSize.uhd;
          _currentLargeThumbSize = LargeThumbSize.uhd;
          break;

        default:
          _currentCompositingQuality = CompositingQuality.Default;
          _currentInterpolationMode = InterpolationMode.Default;
          _currentSmoothingMode = SmoothingMode.Default;
          _currentThumbSize = ThumbSize.average;
          _currentLargeThumbSize = LargeThumbSize.average;
          break;
      }
    }
コード例 #37
0
        public static Stream Resize(int width, Stream imageStream, string outputPath, CompositingQuality compositingQuality, SmoothingMode smoothingMode, InterpolationMode interpolationMode)
        {
            var resizedStream = Resize(width, imageStream, compositingQuality, smoothingMode, interpolationMode);

            Save(resizedStream, outputPath);

            return(resizedStream);
        }
コード例 #38
0
ファイル: gdipFunctions.cs プロジェクト: Profit0004/mono
		internal static extern Status GdipGetCompositingQuality(IntPtr graphics, out CompositingQuality compositingQuality);
コード例 #39
0
        private static Image Resize(Image originalImage, int newWidth, int newHeight, CompositingQuality compositingQuality, SmoothingMode smoothingMode, InterpolationMode interpolationMode, PixelOffsetMode pixelOffsetmode)
        {
            Image result = new Bitmap(newWidth, newHeight);

            using (var graphic = Graphics.FromImage(result))
            {
                graphic.CompositingQuality = compositingQuality;
                graphic.SmoothingMode      = smoothingMode;
                graphic.InterpolationMode  = interpolationMode;
                graphic.PixelOffsetMode    = pixelOffsetmode;

                Rectangle rectangle = new Rectangle(0, 0, newWidth, newHeight);
                graphic.DrawImage(originalImage, rectangle);
                return(result);
            }
        }
コード例 #40
0
ファイル: Graphics.cs プロジェクト: mitice/foo
 GdipSetCompositingQuality(GpGraphics graphics,
                           CompositingQuality compositingQuality);
コード例 #41
0
        public void DrawRaw(float dx, float dy, InterpolationMode iMmode, CompositingQuality cQuality, SmoothingMode sm)
        {
            if (Main.Graphs.Count == 0)
            {
                labelHint.Visible = true;
                Bitmap im = new Bitmap(pictureBox1.Width, pictureBox1.Height);
                using (Graphics gr = Graphics.FromImage(im))
                {
                    gr.FillRectangle(Brushes.White, 0, 0, pictureBox1.Width, pictureBox1.Height);
                }
                Image img = pictureBox1.Image;
                pictureBox1.Image = im;
                if (img != null)
                {
                    img.Dispose();
                }
            }
            else
            {
                labelHint.Visible = false;
                Bitmap im = new Bitmap(pictureBox1.Width, pictureBox1.Height);
                using (Graphics gr = Graphics.FromImage(im))
                {
                    gr.InterpolationMode  = iMmode;
                    gr.CompositingQuality = cQuality;
                    gr.SmoothingMode      = sm;
                    gr.FillRectangle(Brushes.White, 0, 0, pictureBox1.Width, pictureBox1.Height);
                    Matrix mat = new Matrix();
                    mat.Translate(dx, dy);
                    mat.Scale(Zoom, Zoom);
                    foreach (var b in Main.Graphs)
                    {
                        var grP = b.Build();
                        grP.Transform(mat);
                        if (b.MainPen.Width != 1)
                        {
                            gr.DrawPath(new Pen(b.MainPen.Color, b.MainPen.Width * Zoom / 100), grP);
                        }
                        else
                        {
                            gr.DrawPath(b.MainPen, grP);
                        }

                        if (b.Display && b.Markers.Use)
                        {
                            foreach (var c in b.Markers.Points)
                            {
                                gr.FillEllipse(new SolidBrush(b.Markers.Color), Zoom * c + dx - b.Markers.Size / 2, (-Zoom) * (b.DataSource.GetValue(c)) + dy - b.Markers.Size / 2, b.Markers.Size, b.Markers.Size);
                            }
                        }
                    }

                    if (Main.AxisParams.Show)
                    {
                        var AxisPen = new Pen(Main.AxisParams.Color, Main.AxisParams.Width);

                        var xAxis = Main.GetXAxis();
                        var yAxis = Main.GetYAxis();
                        xAxis.Transform(mat);
                        yAxis.Transform(mat);

                        gr.DrawPath(AxisPen, xAxis);
                        gr.DrawPath(AxisPen, yAxis);
                    }
                }
                Image img = pictureBox1.Image;
                pictureBox1.Image = im;
                if (img != null)
                {
                    img.Dispose();
                }

                ZeroPoint = new PointF(dx, dy);
            }
        }
コード例 #42
0
ファイル: ImageResizer.cs プロジェクト: OmidID/ManageMedia
        public static void DrawImageEx(this Graphics g, Bitmap bit, Rectangle area,
                                       CompositingQuality CompositingQuality,
                                       InterpolationMode InterpolationMode,
                                       PixelOffsetMode PixelOffsetMode,
                                       SmoothingMode SmoothingMode,
                                       ZoomType ZoomType, ImageAttributes ImageAttributes
                                       )
        {
            g.CompositingQuality = CompositingQuality;
            g.InterpolationMode  = InterpolationMode;
            g.PixelOffsetMode    = PixelOffsetMode;
            g.SmoothingMode      = SmoothingMode;

            if (ZoomType == ZoomType.CenterIfNoZoom)
            {
                if (bit.Width < area.Width && bit.Height < area.Height)
                {
                    ZoomType = Drawing.ZoomType.Center;
                }
                else
                {
                    ZoomType = Drawing.ZoomType.Zoom;
                }
            }

            switch (ZoomType)
            {
            case ZoomType.Tile:
                if (ImageAttributes != null)
                {
                    using (var brush = new TextureBrush(bit, area, ImageAttributes)) {
                        g.FillRectangle(brush, area);
                    }
                }
                else
                {
                    using (var brush = new TextureBrush(bit)) {
                        g.FillRectangle(brush, area);
                    }
                }
                break;

            case ZoomType.Center:
                area.X += (area.Width - bit.Width) / 2;
                area.Y += (area.Height - bit.Height) / 2;

                area.Width  = bit.Width;
                area.Height = bit.Height;

                FinalDraw(g, bit, area, ImageAttributes);
                break;

            case ZoomType.Stretch:
                FinalDraw(g, bit, area, ImageAttributes);
                break;

            case ZoomType.Zoom:
                int nw, nh;
                SetZoomSize(bit.Width, bit.Height, area.Width, area.Height, out nw, out nh);

                area.X      = ((area.Width - nw) / 2) + area.X;
                area.Y      = ((area.Height - nh) / 2) + area.Y;
                area.Width  = nw;
                area.Height = nh;

                FinalDraw(g, bit, area, ImageAttributes);
                break;

            case Drawing.ZoomType.Crop:
                SetCorpSize(bit.Width, bit.Height, area.Width, area.Height, out nw, out nh);

                g.SetClip(area);
                area.X      = ((area.Width - nw) / 2) + area.X;
                area.Y      = ((area.Height - nh) / 2) + area.Y;
                area.Width  = nw;
                area.Height = nh;

                FinalDraw(g, bit, area, ImageAttributes);
                break;
            }
        }
コード例 #43
0
        /// <summary>Returns a resized form of the specified <paramref name="Bmp"/> to the requested <paramref name="FinalWidth"/> and <paramref name="FinalHeight"/>, using the specified parameters.</summary>
        /// <param name="Bmp">The BMP.</param>
        /// <param name="FinalWidth">The final width.</param>
        /// <param name="FinalHeight">The final height.</param>
        /// <param name="OffsetX">The offset x.</param>
        /// <param name="OffsetY">The offset y.</param>
        /// <param name="CompositingMode">The compositing mode.</param>
        /// <param name="CompositingQuality">The compositing quality.</param>
        /// <param name="InterpolationMode">The interpolation mode.</param>
        /// <param name="SmoothingMode">The smoothing mode.</param>
        /// <param name="PixelOffsetMode">The pixel offset mode.</param>
        /// <param name="WrapMode">The wrap mode.</param>
        /// <returns></returns>
        public static Bitmap Resize(this Bitmap Bmp, int FinalWidth, int FinalHeight, int OffsetX = 0, int OffsetY = 0, CompositingMode CompositingMode = CompositingMode.SourceCopy, CompositingQuality CompositingQuality = CompositingQuality.HighQuality, InterpolationMode InterpolationMode = InterpolationMode.HighQualityBicubic, SmoothingMode SmoothingMode = SmoothingMode.HighQuality, PixelOffsetMode PixelOffsetMode = PixelOffsetMode.HighQuality, WrapMode WrapMode = WrapMode.TileFlipXY)
        {
            Rectangle DestRect  = new Rectangle(OffsetX, OffsetY, FinalWidth, FinalHeight);
            Bitmap    DestImage = new Bitmap(FinalWidth, FinalHeight);

            DestImage.SetResolution(Bmp.HorizontalResolution, Bmp.VerticalResolution);

            using (Graphics Graphics = Graphics.FromImage(DestImage)) {
                Graphics.CompositingMode    = CompositingMode;
                Graphics.CompositingQuality = CompositingQuality;
                Graphics.InterpolationMode  = InterpolationMode;
                Graphics.SmoothingMode      = SmoothingMode;
                Graphics.PixelOffsetMode    = PixelOffsetMode;

                using (ImageAttributes WrapAttrb = new ImageAttributes()) {
                    WrapAttrb.SetWrapMode(WrapMode);
                    Graphics.DrawImage(Bmp, DestRect, 0, 0, Bmp.Width, Bmp.Height, GraphicsUnit.Pixel, WrapAttrb);
                }
            }

            return(DestImage);
        }
コード例 #44
0
ファイル: Graphics.cs プロジェクト: Radytz/DroppedBoxx
 internal static extern GpStatus GdipGetCompositingQuality(GpGraphics graphics, out CompositingQuality compositingQuality);
コード例 #45
0
        private void PaintCellImage(MapGraphics chartGraph, int fontSizeReducedBy, Font legendAutoFont, Size singleWCharacterSize)
        {
            if (string.IsNullOrEmpty(Image))
            {
                return;
            }
            Rectangle empty = Rectangle.Empty;
            Image     image = GetLegend().Common.ImageLoader.LoadImage(Image);

            empty.Width  = image.Size.Width;
            empty.Height = image.Size.Height;
            Rectangle rectangle = cellPosition;

            rectangle.Width  = empty.Width;
            rectangle.Height = empty.Height;
            if (!ImageSize.IsEmpty)
            {
                if (ImageSize.Width > 0)
                {
                    int num = (int)((float)(ImageSize.Width * singleWCharacterSize.Width) / 100f);
                    if (num > cellPosition.Width)
                    {
                        num = cellPosition.Width;
                    }
                    rectangle.Width = num;
                }
                if (ImageSize.Height > 0)
                {
                    int num2 = (int)((float)(ImageSize.Height * singleWCharacterSize.Height) / 100f);
                    if (num2 > cellPosition.Height)
                    {
                        num2 = cellPosition.Height;
                    }
                    rectangle.Height = num2;
                }
            }
            float num3 = 1f;

            if (empty.Height > rectangle.Height)
            {
                num3 = (float)empty.Height / (float)rectangle.Height;
            }
            if (empty.Width > rectangle.Width)
            {
                num3 = Math.Max(num3, (float)empty.Width / (float)rectangle.Width);
            }
            empty.Height = (int)((float)empty.Height / num3);
            empty.Width  = (int)((float)empty.Width / num3);
            empty.X      = (int)((float)cellPosition.X + (float)cellPosition.Width / 2f - (float)empty.Width / 2f);
            empty.Y      = (int)((float)cellPosition.Y + (float)cellPosition.Height / 2f - (float)empty.Height / 2f);
            if (Alignment == ContentAlignment.BottomLeft || Alignment == ContentAlignment.MiddleLeft || Alignment == ContentAlignment.TopLeft)
            {
                empty.X = cellPosition.X;
            }
            else if (Alignment == ContentAlignment.BottomRight || Alignment == ContentAlignment.MiddleRight || Alignment == ContentAlignment.TopRight)
            {
                empty.X = cellPosition.Right - empty.Width;
            }
            if (Alignment == ContentAlignment.BottomCenter || Alignment == ContentAlignment.BottomLeft || Alignment == ContentAlignment.BottomRight)
            {
                empty.Y = cellPosition.Bottom - empty.Height;
            }
            else if (Alignment == ContentAlignment.TopCenter || Alignment == ContentAlignment.TopLeft || Alignment == ContentAlignment.TopRight)
            {
                empty.Y = cellPosition.Y;
            }
            ImageAttributes imageAttributes = new ImageAttributes();

            if (ImageTranspColor != Color.Empty)
            {
                imageAttributes.SetColorKey(ImageTranspColor, ImageTranspColor, ColorAdjustType.Default);
            }
            SmoothingMode      smoothingMode      = chartGraph.SmoothingMode;
            CompositingQuality compositingQuality = chartGraph.Graphics.CompositingQuality;
            InterpolationMode  interpolationMode  = chartGraph.Graphics.InterpolationMode;

            chartGraph.SmoothingMode = SmoothingMode.AntiAlias;
            chartGraph.Graphics.CompositingQuality = CompositingQuality.HighQuality;
            chartGraph.Graphics.InterpolationMode  = InterpolationMode.HighQualityBicubic;
            chartGraph.DrawImage(image, empty, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttributes);
            chartGraph.SmoothingMode = smoothingMode;
            chartGraph.Graphics.CompositingQuality = compositingQuality;
            chartGraph.Graphics.InterpolationMode  = interpolationMode;
        }