Почему fillpath отличается результатом в picturebox и printdocument ?
Я пытаюсь заполнить изображение в круглый угловой прямоугольник... Я исследовал интернет, нашел несколько кодов и модифицировал их. Я получаю то, что хочу, в PictureBoX FillPath.
Только различия есть ;
в PictureBox
Dim grpX As Graphics = PictureBox1.CreateGraphics
и в PrintDocument
Dim grpX As Graphics = e.Graphics
остальные все коды одинаковы. Но в PictureBox изображение вписалось идеально. другой на изображении объект printdocument только заполнить место, как площадь прямоугольника.
Как я могу заполнить прямоугольник в PrintDocument так же, как заполнен в PictureBox ?
Что я уже пробовал:
Public Function createRoundRect(ByVal R As Rectangle, ByVal radius As Integer) As GraphicsPath Dim gp As New GraphicsPath() Dim x As Integer, y As Integer, w As Integer, h As Integer x = R.X y = R.Y w = R.Width h = R.Height If radius = 0 Then gp.AddRectangle(New Rectangle(x, y, w, h)) Else gp.AddLine(x + radius, y, x + w - radius, y) gp.AddArc(x + w - radius, y, radius, radius, 270, 90) gp.AddLine(x + w, y + radius, x + w, y + h - radius) gp.AddArc(x + w - radius, y + h - radius, radius, radius, 0, 90) gp.AddLine(x + w - radius, y + h, x + radius, y + h) gp.AddArc(x, y + h - radius, radius, radius, 90, 90) gp.AddLine(x, y + h - radius, x, y + radius) gp.AddArc(x, y, radius, radius, 180, 90) gp.CloseFigure() End If Return gp End Function Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click Dim newImage As Image = Drawing.Image.FromFile("C:\Users\Yaman\Desktop\Frames\384.jpg") Dim imaj As Bitmap = New Bitmap("C:\Users\Yaman\Desktop\Frames\384.jpg") Dim grpX As Graphics = PictureBox1.CreateGraphics Dim rectX As Rectangle = New Rectangle(CDec(10), CDec(10), CDec(200), CDec(100)) Dim tg As Graphics = Graphics.FromImage(imaj) tg.SmoothingMode = SmoothingMode.AntiAlias grpX.SmoothingMode = SmoothingMode.AntiAlias tg.DrawImage(newImage, CDec(10), CDec(10), CDec(200), CDec(100)) Dim TBrush As New TextureBrush(imaj) Dim gp As New GraphicsPath gp = createRoundRect(rectX, 12) grpX.FillPath(TBrush, gp) End Sub Private Sub PrintDocument2_PrintPage(sender As Object, e As PrintPageEventArgs) Handles PrintDocument2.PrintPage Dim newImage As Image = Drawing.Image.FromFile("C:\Users\Yaman\Desktop\Frames\384.jpg") Dim imaj As Bitmap = New Bitmap("C:\Users\Yaman\Desktop\Frames\384.jpg") Dim grpX As Graphics = e.Graphics Dim rectX As Rectangle = New Rectangle(CDec(10), CDec(10), CDec(200), CDec(100)) Dim tg As Graphics = Graphics.FromImage(imaj) tg.SmoothingMode = SmoothingMode.AntiAlias grpX.SmoothingMode = SmoothingMode.AntiAlias tg.DrawImage(newImage, CDec(10), CDec(10), CDec(200), CDec(100)) Dim TBrush As New TextureBrush(imaj) Dim gp As New GraphicsPath gp = createRoundRect(rectX, 12) grpX.FillPath(TBrush, gp) End Sub
CHill60
Пожалуйста, не удаляйте содержимое вашего поста таким образом. Если вы хотите удалить сообщение, то используйте значок "мусорная корзина", который появится, когда вы наведете курсор мыши на свой вопрос