김보람 Ответов: 0

В ГТК-Шарп, проблема размер изображения: ГТК.изображения не удается преобразовать систему.чертеж.изображения


Привет, я хочу загрузить файл изображения с компьютера и изменить его размер.
Поэтому я кодировал так, но были проблемы.
image1 = FixedSize(image1, 300, 300);
//compiler error reference: CS1502, CS1503
//cs1503: gtk.image cannot convert system.drawing.image
//cs1502: There are wrong argument at method (am i right? sorry for my eng,,)


Я читал справочную справку, но ничего не понял и не знаю, как их решить.
Я использовал gtk# (а также c#) в течение месяца. Plz дайте мне решение легко для меня, чтобы понять
Вот мой код.
Спасибо и извините за мой английский:(

//when button clicked and select an image file, it load through resize function
private Gtk.Image picturebuf = null;
...

protected void OnBtnOpenClicked (object sender, EventArgs e)
		{
			FileChooserDialog fcd = new FileChooserDialog ("Open file", this,
FileChooserAction.Open, "Cancel", ResponseType.Cancel,"Open", ResponseType.Accept);			
			
			if (fcd.Run () == (int)ResponseType.Accept) 
			{
				if(fcd.Filename.ToLower().EndsWith(".png")||fcd.Filename.ToLower().EndsWith(".bmp")||fcd.Filename.ToLower().EndsWith(".jpg"))
				{
					if (picturebuf != null && picturebuf.Pixbuf != null)
					{
						image1 = FixedSize(image1, 300, 300);
						image1.Pixbuf.Dispose();
					}					
					image1.Pixbuf = new Gdk.Pixbuf(fcd.Filename);
					

				} 				
			} 
			fcd.Destroy();		
		}
//it is resizing function
static System.Drawing.Image FixedSize (System.Drawing.Image imgPhoto, int Width, int Height)
		{
			int sourceWidth = imgPhoto.Width;
			int sourceHeight = imgPhoto.Height;
			int sourceX = 0;
			int sourceY = 0;
			int destX = 0;
			int destY = 0;

			float nPercent = 0;
			float nPercentW = 0;
			float nPercentH = 0;

			nPercentW = ((float)Width / (float)sourceWidth);
			nPercentH = ((float)Height / (float)sourceHeight);
			if (nPercentH < nPercentW) 
			{
				nPercent = nPercentH;
				destX = System.Convert.ToInt16((Width-(sourceWidth * nPercent))/2);
			}
			else
			{
				nPercent = nPercentW;
				destY = System.Convert.ToInt16((Height-(sourceHeight * nPercent))/2);
			}

			int destWidth = (int)(sourceWidth * nPercent);
			int destHeight = (int)(sourceHeight * nPercent);

			Bitmap bmPhoto = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);
			bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);

			Graphics grPhoto = Graphics.FromImage(bmPhoto);
			grPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

			grPhoto.DrawImage(imgPhoto, new System.Drawing.Rectangle(destX, destY, destWidth, destHeight),new System.Drawing.Rectangle(sourceX, sourceY, sourceWidth, sourceHeight), GraphicsUnit.Pixel);

			grPhoto.Dispose ();
			return bmPhoto;

		}


Что я уже пробовал:

ну, я не знаю, что мне здесь писать
я попытался преобразовать image1(в FixSize func) в image. pixbuf и picturnbuf

0 Ответов