2013-07-25 9 views
0

я хочу, чтобы сделать изображение в vb.net, который является строкой
она должна быть изготовлена ​​из 2-х цветов одного в ForeColor другие как цвет, окружающем первый один
, как я должен сделать это с помощью код?
мой результат должен быть какой-то вещи, как это изображение (желтый, как ForeColor и красный! В качестве фона)
an image with 2 colors [строка в персидской]строки с окружающим цветом

сейчас я сначала сделать строку с помощью

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 

Проблема в том, что большое изображение занимает достаточно времени.

любой способ?

+0

Итак, с какой частью задачи вы столкнулись? Вы спрашиваете, как реализовать метод 'isnabor'? –

+0

это занимает много времени для больших изображений, любая идея? – Hossein

ответ

1

благодаря помощи моего друга я нашел ответ здесь:

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 
Смежные вопросы