Строка с окружающим цветом
Я хочу сделать изображение в vb.net, которое является строкой
он должен быть сделан из 2 цветов, один из которых является первым цветом другого, как цвет, окружающий первый
Как я должен сделать это с помощью кода?
мой результат должен быть чем-то вроде этого изображения (желтый как передний цвет и красный! как фон)
[строка на персидском языке]
сейчас я сначала делаю строку, используя
Dim result As New Bitmap(100, 100)
Dim g As Graphics = Graphics.FromImage(result)
g.DrawString("My string", New Font("Arial", 40), New SolidBrush(Color.yellow), 22, 22)
а затем обработать это изображение, проверив каждый пиксель, и если они близки к строке, я окрашиваю их в красный цвет, код такой
kr = font_color.R
kg = font_color.G
kb = font_color.B
For i = 0 To (img.Height - 1) Step 1
prg.Value = prg.Value + 1
For j = 0 To (img.Width - 1)
If (kr = img.GetPixel(j, i).R And kg = img.GetPixel(j, i).G And kb = img.GetPixel(j, i).B) Then
'some code
ElseIf (isnabor(j, i) = True) Then'checks if it is close enough or not
img.SetPixel(j, i, back_color)
Else
img.SetPixel(j, i, Color.Transparent)
End If
Next
Next
Проблема в том, что для большого изображения требуется много времени
лучше?
2 ответа
Решение
Попробуйте использовать GraphicsPath. Проверьте следующие ссылки для получения дополнительной информации
С помощью моего друга я нашел ответ здесь:
Dim result As New Bitmap(1000, 1000)
Dim grp As Graphics = Graphics.FromImage(result)
Dim gp As New Drawing2D.GraphicsPath
Dim useFont As Font = New Font("IranNastaliq", 100, FontStyle.Regular)
grp.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
grp.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
gp.AddString(rr.Lines(aa), useFont.FontFamily, FontStyle.Regular, 100, New Point(0, 0), StringFormat.GenericTypographic)
useFont.Dispose()
grp.FillPath(Brushes.White, gp)
grp.DrawPath(Pens.Black, gp)
gp.Dispose()
pic.Image = result