Question

am en utilisant C #

AM ayant une image bitmap comme ci-dessous

Je veux créer une image répétée comme ci-dessous en position horizontale pour obtenir l'image Continuous pour répétées très améliorée une largeur donnée. je voulais dire que j'aime dessiner l'image répétée comme ci-dessous de ce qui précède bitmap unique (en mots simples, en html, nous pouvons avoir une image et répéter ensemble X pour obtenir le image.like répété que) comment je peux le faire en c #.

afin que je puisse dessiner une nouvelle image dans mon application. Comment faire.?

Était-ce utile?

La solution

Vous pouvez le faire comme ceci:

Bitmap myImage = new Bitmap(50, 50); //assuming you want you image to be 50,50
Bitmap originalImage = new Bitmap("myPngSource.png"); //original image to copy

using (Graphics g = Graphics.FromImage(myImage))
{
     g.DrawImage(originalImage, new Rectangle(0, 0, originalImage.Width, originalImage.Height));
}

MemoryStream ms = new MemoryStream();
myImage.Save(ms, ImageFormat.Png);

BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();

MyImageControl.Source = bi;

Ou quelque chose comme ça, ce n'est pas testé, et je viens déchiré dehors d'une petite application utilitaire j'ai fait il y a un certain temps. J'espère que cela aide ... Vous avez juste besoin de changer la largeur de l'image finale et faire une boucle sur l'appel g.DrawImage incrémenter le second paramètre par la largeur de la originalImage. (À savoir si vous voulez 5 répétitions, faire une boucle 5 fois)

HTH --Mark

Autres conseils

vous n'avez pas besoin de créer d'autres bitmaps. il est une question de dessin bitmap. à l'endroit où vous DARW l'utilisation bitmap DrawImage méthode plusieurs fois et incrémenter la position X de l'image bitmap par sa largeur. disons 16 est la largeur de l'image. assurez-vous qui a été initialisé bitmap.

private void Form1_Paint(object sender, PaintEventArgs e)
{

    e.Graphics.DrawImage(bmp,x,y);
    e.Graphics.DrawImage(bmp,x+16,y);
    e.Graphics.DrawImage(bmp,x+32,y);
}
//x- integer value represents no. of times images to repeated horizontally
var destImage = new Bitmap(sourceImage.Width * x, sourceImage.Height, PixelFormat.Format32bppArgb);
using (TextureBrush brush = new TextureBrush(sourceImage, WrapMode.Tile))
using (Graphics g = Graphics.FromImage(destImage))
{
// Do your drawing here
g.FillRectangle(brush, 0, 0, destImage.Width, destImage.Height);
destImage.Save(@"C:\sourceImage.png", ImageFormat.Png); 
//mention path of image to save, if needed
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top