Добавление битмапа в неквадрат (полигон) - C#

Узнай цену своей работы

Формулировка задачи:

Допустим есть битмап. Есть полигон. Как залить битмап в полигон, чтобы полигон заполнился текстурой полностью? (размер текстуры заранее больше чем полигон)
Bitmap mybitmap=new Bitmap(Bitmap.FromFile("C:\\somefilename.bmp"));
 
GraphicsPath path = new GraphicsPath();
 PointF[] sd=new PointF[3];
 sd[0]=new PointF(2,2);
 sd[1]=new PointF(44,20);
 sd[2]=new PointF(25,40);
 path.AddPolygon(sd);
Или если имеются еще какие-либо средства решения, буду благодарен за указания.

Решение задачи: «Добавление битмапа в неквадрат (полигон)»

textual
Листинг программы
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
 
namespace WindowsFormsApplication8
{
    public partial class Form1 : Form
    {
        GraphicsPath path;
        Bitmap bmp;
 
        public Form1 ( )
        {
            InitializeComponent();
 
            bmp = (Bitmap)Image.FromFile( @"...." );
 
            path = new GraphicsPath();
 
            PointF[] sd = new PointF[3];
            sd[0] = new PointF( 2, 2 );
            sd[1] = new PointF( 44, 20 );
            sd[2] = new PointF( 25, 40 );
            path.AddPolygon( sd );
 
            this.Paint += new PaintEventHandler( Form1_Paint );
        }
 
        void Form1_Paint ( object sender, PaintEventArgs e )
        {
            if ( bmp != null )
            {
                var g = e.Graphics;
                // Change clip
                g.SetClip( path, CombineMode.Replace );
                g.DrawImageUnscaled( bmp, 0, 0 );
                g.ResetClip();
                // other methods with normal region
                g.DrawEllipse( Pens.Red, 100, 100, 25, 25 );
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.533 из 5
Похожие ответы