Повторение изображения в горизонтальном положении (C # Drawing) - PullRequest
1 голос
/ 10 августа 2010

использую c #

У меня растровое изображение, как показано ниже

альтернативный текст http://img210.imageshack.us/img210/2460/89372850.jpg

Я хочу создать повторное изображение, как показано ниже, в горизонтальном положении, чтобы получить повторное непрерывное изображение для некоторой заданной ширины. я имел в виду, что я хотел бы нарисовать повторное изображение, как показано ниже, из приведенного выше одного растрового изображения (простыми словами, в html у нас может быть изображение и установить повтор X, чтобы получить повторное изображение. вот так), как я могу сделать это в c #. *

альтернативный текст http://img59.imageshack.us/img59/7663/26679829.jpg

чтобы я мог нарисовать новое растровое изображение в своем приложении. Как это сделать.?

Ответы [ 3 ]

0 голосов
/ 11 августа 2010

Вы можете сделать это так:

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 повторений, сделайте цикл for 5 раз)

HTH --Mark

0 голосов
/ 18 мая 2015
//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
}
0 голосов
/ 10 августа 2010

вам не нужно создавать другие растровые изображения.это вопрос рисования растрового изображения.в том месте, где вы рисуете растровое изображение, несколько раз используйте метод 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);
}
...