После нескольких неудачных поисков в Google, наконец, я подумал о том, чтобы попросить экспертов помочь мне в этой проблеме, поскольку этот сайт всегда мне помогал.
Чего я хочу?
Я хочу создать маркер для своего приложения для рисования. Я хочу, чтобы это было похоже на маркер, который вы видите в Windows Snipping Tool.
В чем моя проблема?
Проблема заключается в том, что хотя я и могу рисовать полупрозрачные или непрозрачные прямоугольники с помощью кода
gfx.FillRectangle(New SolidBrush(Color.FromArgb(100, Colors.GreenYellow)), x, y, width, height), но если я рисую другой прямоугольник, перекрывающий любые предыдущие прямоугольники, цвета становятся темнее и уменьшают прозрачность прямоугольников в местах их перекрытия.
Код:
Public Class Form1
Dim drag As Boolean
Dim mouseX, mouseY As Integer
Dim prev As Point
Dim initi As Point
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Dim grx As Graphics = Panel1.CreateGraphics
grx.DrawString("+", New Font("Arial", 144, FontStyle.Regular), New SolidBrush(Color.FromArgb(100, Color.GreenYellow)), New Point(200, 200))
End Sub
Private Sub Panel1_MouseDown(sender As Object, e As MouseEventArgs) Handles Panel1.MouseDown
drag = True
mouseX = MousePosition.X - Me.Left - 8
mouseY = MousePosition.Y - Me.Top - 34
initi = New Point(mouseX, mouseY)
End Sub
Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
If drag Then
mouseX = MousePosition.X - Me.Left - 8
mouseY = MousePosition.Y - Me.Top - 34
End If
End Sub
Private Sub Panel1_MouseUp(sender As Object, e As MouseEventArgs) Handles Panel1.MouseUp
drag = False
prev = New Point(0, 0)
Dim grx As Graphics = Panel1.CreateGraphics
grx.FillRectangle(New SolidBrush(Color.FromArgb(100, Color.GreenYellow)), initi.X, initi.Y, (mouseX - initi.X), (mouseY - initi.Y))
End Sub
End Class
Скриншот приложения (показывает проблему)
- Левый "+" тот, который я хочу нарисовать.
- Правильный "+" - это тот, который я получаю, когда рисую.

ComposingMode.SourceCopy. Но проблема в том, что он перезаписывает фон, выбирая один цвет, например, если я использую его поверх изображения, хотя нарисованные линии не изменят свой цвет для перекрытия и сохранения постоянного цвета нарисованных линий, но он выбирает только один цвет в качестве фона цвет с изображения и, наконец, перекрывает изображение, делая его одним цветом, или вы можете сказать, стирая изображение на цветном фоне или стирая изображение с помощью цветных ластиков. :P Есть еще предложения? - person Mohammed Julfikar Ali Mahbub   schedule 26.09.2017