我正在使用c#
我有一个像下面这样的位图图像
我想在水平位置创建一个像下面这样的重复图像,以获得给定宽度的重复连续图像。我的意思是,我喜欢从上面的单个位图(简单地说,在html中,我们可以有一个图像,并设置repeat X来获得重复的image.like )中绘制重复的图像,就像下面这样,我如何在c#中做到这一点。
这样我就可以在我的应用程序中绘制新的位图。该怎么做呢?
发布于 2010-08-11 06:54:11
你可以这样做:
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;
或者类似的东西,这是未经测试的,我只是从我不久前开发的一个小实用程序中抄袭出来的。我希望这会有帮助..。您只需要更改最终图像的宽度,并在g.DrawImage
调用上执行一次循环,将第二个参数递增originalImage的宽度。(例如,如果您想要5次重复,则执行5次for循环)
HTH --标记
发布于 2015-05-18 14:05:56
//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
}
发布于 2010-08-10 07:27:17
您不需要创建其他位图。这是一个绘制位图的问题。在你修改位图的地方,使用drawImage方法几次,并将位图的X位置按其宽度递增。比方说16是你的图像的宽度。确保已初始化位图。
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);
}
https://stackoverflow.com/questions/3446844
复制