Noticias Weblogs Foros Wiki Código

RecorteX

» csharp
394 usuarios y 230 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta csharp

RSS
Recortes: 16

Etiquetas relacionadas:
xml
vbnet
registro
hilos
splash
Javascript
threading
js
Ajax
multithreading
win32
Explorer

Redimensionar una imagen

Redimensionar una imagen
 
		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.Clear(Color.Transparent);
			grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
 
			grPhoto.DrawImage(imgPhoto, 
				new Rectangle(destX,destY,destWidth,destHeight),
				new Rectangle(sourceX,sourceY,sourceWidth,sourceHeight),
				GraphicsUnit.Pixel);
 
			grPhoto.Dispose();
			return bmPhoto;
		}
 

Poner marca de agua a una imagen

Poner marca de agua a una imagen
 
		private System.Drawing.Image PutWaterMark(System.Drawing.Image imgPhoto, System.Drawing.Image imgWatermark, string Copyright)
		{
 
			int phWidth = imgPhoto.Width;
			int phHeight = imgPhoto.Height;
 
			//create a Bitmap the Size of the original photograph
			Bitmap bmPhoto = new Bitmap(phWidth, phHeight, PixelFormat.Format24bppRgb);
 
			bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);
 
			//load the Bitmap into a Graphics object 
			Graphics grPhoto = Graphics.FromImage(bmPhoto);
 
			//create a image object containing the watermark
			int wmWidth = imgWatermark.Width;
			int wmHeight = imgWatermark.Height;
 
			//------------------------------------------------------------
			//Step #1 - Insert Copyright message
			//------------------------------------------------------------
 
			//Set the rendering quality for this Graphics object
			grPhoto.SmoothingMode = SmoothingMode.AntiAlias;
 
			//Draws the photo Image object at original size to the graphics object.
			grPhoto.DrawImage(
				imgPhoto,                               // Photo Image object
				new Rectangle(0, 0, phWidth, phHeight), // Rectangle structure
				0,                                      // x-coordinate of the portion of the source image to draw. 
				0,                                      // y-coordinate of the portion of the source image to draw. 
				phWidth,                                // Width of the portion of the source image to draw. 
				phHeight,                               // Height of the portion of the source image to draw. 
				GraphicsUnit.Pixel);                    // Units of measure 
 
			//-------------------------------------------------------
			//to maximize the size of the Copyright message we will 
			//test multiple Font sizes to determine the largest posible 
			//font we can use for the width of the Photograph
			//define an array of point sizes you would like to consider as possiblities
			//-------------------------------------------------------
			int[] sizes = new int[]{16,14,12,10,8,6,4};
 
			Font crFont = null;
			SizeF crSize = new SizeF();
 
			//Loop through the defined sizes checking the length of the Copyright string
			//If its length in pixles is less then the image width choose this Font size.
			for (int i=0 ;i<7; i++)
			{
				//set a Font object to Arial (i)pt, Bold
				crFont = new Font("arial", sizes[i], FontStyle.Bold);
				//Measure the Copyright string in this Font
				crSize = grPhoto.MeasureString(Copyright, crFont);
 
				if((ushort)crSize.Width < (ushort)phWidth)
					break;
			}
 
			//Since all photographs will have varying heights, determine a 
			//position 5% from the bottom of the image
			int yPixlesFromBottom = (int)(phHeight *.05);
 
			//Now that we have a point size use the Copyrights string height 
			//to determine a y-coordinate to draw the string of the photograph
			float yPosFromBottom = ((phHeight - yPixlesFromBottom)-(crSize.Height/2));
 
			//Determine its x-coordinate by calculating the center of the width of the image
			float xCenterOfImg = (phWidth/2);
 
			//Define the text layout by setting the text alignment to centered
			StringFormat StrFormat = new StringFormat();
			StrFormat.Alignment = StringAlignment.Center;
 
			//define a Brush which is semi trasparent black (Alpha set to 153)
			SolidBrush semiTransBrush2 = new SolidBrush(Color.FromArgb(153, 0, 0, 0));
 
			//Draw the Copyright string
			grPhoto.DrawString(Copyright,                 //string of text
				crFont,                                   //font
				semiTransBrush2,                           //Brush
				new PointF(xCenterOfImg+1,yPosFromBottom+1),  //Position
				StrFormat);
 
			//define a Brush which is semi trasparent white (Alpha set to 153)
			SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(153, 255, 255, 255));
 
			//Draw the Copyright string a second time to create a shadow effect
			//Make sure to move this text 1 pixel to the right and down 1 pixel
			grPhoto.DrawString(Copyright,                 //string of text
				crFont,                                   //font
				semiTransBrush,                           //Brush
				new PointF(xCenterOfImg,yPosFromBottom),  //Position
				StrFormat);                               //Text alignment
 
			
 
			//------------------------------------------------------------
			//Step #2 - Insert Watermark image
			//------------------------------------------------------------
 
			//Create a Bitmap based on the previously modified photograph Bitmap
			Bitmap bmWatermark = new Bitmap(bmPhoto);
			bmWatermark.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution);
			//Load this Bitmap into a new Graphic Object
			Graphics grWatermark = Graphics.FromImage(bmWatermark);
 
			//To achieve a transulcent watermark we will apply (2) color 
			//manipulations by defineing a ImageAttributes object and 
			//seting (2) of its properties.
			ImageAttributes imageAttributes = new ImageAttributes();
 
			//The first step in manipulating the watermark image is to replace 
			//the background color with one that is trasparent (Alpha=0, R=0, G=0, B=0)
			//to do this we will use a Colormap and use this to define a RemapTable
			ColorMap colorMap = new ColorMap();
 
			//My watermark was defined with a background of 100% Green this will
			//be the color we search for and replace with transparency
			colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);
			colorMap.NewColor = Color.FromArgb(0, 0, 0, 0); 
 
			ColorMap[] remapTable = {colorMap};
 
			imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
 
			//The second color manipulation is used to change the opacity of the 
			//watermark.  This is done by applying a 5x5 matrix that contains the 
			//coordinates for the RGBA space.  By setting the 3rd row and 3rd column 
			//to 0.3f we achive a level of opacity
			float[][] colorMatrixElements = { 
												new float[] {1.0f,  0.0f,  0.0f,  0.0f, 0.0f},       
												new float[] {0.0f,  1.0f,  0.0f,  0.0f, 0.0f},        
												new float[] {0.0f,  0.0f,  1.0f,  0.0f, 0.0f},        
												new float[] {0.0f,  0.0f,  0.0f,  0.3f, 0.0f},        
												new float[] {0.0f,  0.0f,  0.0f,  0.0f, 1.0f}}; 
			ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements);
 
			imageAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default,
				ColorAdjustType.Bitmap);
 
			//For this example we will place the watermark in the upper right
			//hand corner of the photograph. offset down 10 pixels and to the 
			//left 10 pixles
 
			int xPosOfWm = ((phWidth - wmWidth)-10);
			int yPosOfWm = 10;
 
			grWatermark.DrawImage(imgWatermark, 
				new Rectangle(xPosOfWm,yPosOfWm,wmWidth,wmHeight),  //Set the detination Position
				0,                  // x-coordinate of the portion of the source image to draw. 
				0,                  // y-coordinate of the portion of the source image to draw. 
				wmWidth,            // Watermark Width
				wmHeight,		    // Watermark Height
				GraphicsUnit.Pixel, // Unit of measurment
				imageAttributes);   //ImageAttributes Object
 
			//Replace the original photgraphs bitmap with the new Bitmap
			imgPhoto = bmWatermark;
			grPhoto.Dispose();
			grWatermark.Dispose();
 
			//save new image to file system.
			return imgPhoto;
		}
 

Cambiar de []byte a Image para usar en app

Cambiar de []byte a Image para usar en app, es util cuando tenemos un atributo binario en la bd, y la queremos sacar para asignarla a una clase de tipo imagen
 
		public static System.Drawing.Image Byte2Image(byte[] array)
		{
			System.IO.MemoryStream s = new MemoryStream();
			s.Write(array,0,array.Length);
			System.Drawing.Image foto = System.Drawing.Image.FromStream(s);
			s.Close();
			return foto;
		}
 

Cambiar de Image a []byte para almacenar en DB

Cambiar de Image a []byte para almacenar en DB
 
  		public static byte[] Image2Byte(System.Drawing.Image image)
		{
			// make a memory stream to work with the image bytes
			MemoryStream imageStream = new MemoryStream();
 
			// put the image into the memory stream
			image.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
 
			return imageStream.GetBuffer();
		}
 

Obtener la versión de Explorer desde C#

Internet Explorer, al contrario que otros navegadores, no almacena la versión actual de su navegador en el registro. La única forma de obtenerlo es accediendo a la función DllGetVersion presente en la librería "shdocvw.dll" que es la encargada de realizar el renderizado de las páginas.
Para ello tan solo debemos realizar los siguientes sencillos pasos:

1º Declarar la función y la librería en la que se encuentra dentro de la clase que va a utilizarlo.
 
[System.Runtime.InteropServices.DllImport ("shdocvw.dll")]
private static extern int DllGetVersion (ref DLLVERSIONINFO pdvi);
 
2º Definir la estructura que almacenará la información de la versión
 
struct DLLVERSIONINFO
{
  public uint cbSize,
  dwMajorVersion,
  dwMinorVersion,
  dwBuildNumber,
  dwPlatformID;
}
 
3º Llamar a la función y obtener la información.
 
DLLVERSIONINFO dvi = new DLLVERSIONINFO ();
dvi.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf (dvi);
int resultado = DllGetVersion (ref dvi);
 
if (resultado == 0)
  return string.Format ("{0}.{1}.{2}", dvi.dwMajorVersion, dvi.dwMinorVersion, dvi.dwBuildNumber);
else
  return "?";
 

Crear un fichero XML

El código para generar un documento XML es el siguiente:
 
public void ExportarXML(string filename)
{
	XmlTextWriter writer = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
        
	//Usa indentación por legibilidad
	writer.Formatting = Formatting.Indented;
        
	//Escribe la declaración del XML
	writer.WriteStartDocument();
        
	//Escribe el elemento raiz
	writer.WriteStartElement("persona");
        
	//Escribe los elementos dentro de sus etiquetas
	writer.WriteElementString("nombre", "Emanuel");
	writer.WriteElementString("apellido", "Lopez");
	writer.WriteElementString("nacionalidad", "Argentino");
      
	writer.WriteEndElement();
 
	writer.Flush();
	writer.Close();  
}
 
la salida sera la siguiente
 
<?xml version="1.0" encoding="utf-8"?>
<persona>
  <nombre>Emanuel</nombre>
  <apellido>Lopez</apellido>
  <nacionalidad>Argentino</nacionalidad>
<persona>
 
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin - Información legal y técnica