Рисование окружностей - Visual Basic .NET

  1. Требуется нарисовать концентрические окружности уменьшающегося радиуса. Радиус каждой следующей окружности равен 9/10 радиуса предыдущей. Рисование прекращается, когда радиус становится равным минимальному значению Rmin = 1.vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Public Class Form1     Dim R As Single     Dim Rmin As Single     Dim graphics As Graphics       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load         graphics = PictureBox1.CreateGraphics()         R = 8         Rmin = 1         Call ConcentricCricles(R, Rmin)     End Sub       Sub ConcentricCricles(ByVal R As Single, ByVal Rmin As Single)         If R > Rmin Then             graphics.DrawEllipse(Pens.Black, 0, 0, R, R)             R = 0.9 * R             Call ConcentricCricles(R, Rmin)         End If     End Sub End ClassНе могу понять как именно делать вывод, на форме ничего нет.


textual

Код к задаче: «Рисование окружностей - Visual Basic .NET»

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim h As New Bitmap(Me.Width, Me.Height)
        Dim g As Graphics = Graphics.FromImage(h)
 
        g.TranslateTransform(Me.Width \ 2 - 10, Me.Height \ 2 - 10)
 
        Dim R As Single = Me.Width - 10
        Dim Rmin As Single = 1
        Do While R > Rmin
            g.DrawEllipse(Pens.Black, -(R \ 2), -(R \ 2), R, R)
            R = 0.8 * R
        Loop
        g.Dispose()
        Me.BackgroundImage = h
    End Sub
End Class

СДЕЛАЙТЕ РЕПОСТ

6   голосов, оценка 4.333 из 5



Похожие ответы
  1. Всем здравствуйте. Мы нарисовали на PictureBox средствами GDI+ или API графический примитив. Свернув-развернув форму мы получим чистое окно, наше рисование исчезнет. Вставлять код в обработчик Paint не вариант, так-как это не статический блок кода. Наверняка есть способ, позволяющий дублировать наше рисование в памяти и при перерисовке формы его восстанавливать.

  1. я сделал чтобы определялись координаты а вот чтоб рисовалась линия и треугольник не могуvb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Public Class Form1         Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove           Label7.Text = Str(e.X) & Str(e.Y)     End Sub       Dim a, b As Integer         Dim i As Boolean     Dim xl As Integer     Dim yl As Integer     Dim x2 As Integer     Dim y2 As Integer           Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         a = 1     End Sub       Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click         a = 2     End Sub       Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click         a = 3     End Sub           Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click       End Sub       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load         If a = 1 Then             MsgBox(a)         End If     End Sub End Class

  1. Доброго времени суток. Появилась необходимость вывода на печать таблицы. В принципе ничего сложного. Но есть один неприятный момент - распечатанная таблица получается мутная, границы линий размыты. Сначала реализовал печать так: Открывается форма, на которой расположен PictureBox. В PictureBox загружен графический файл - рисунок таблицы с подписями. На PictureBox, рядом с подписями, располагаю Label'ы, в которые программно вписываю необходимые данные. Далее распечатываю методом PrintForm - получается мутно. Если пользоваться PrintDocument, то PictureBox с фоновой таблицей распечатывается, а Label'ы нет. Тогда сделал так: Отказался от Label'ов и дорисовываю текст в PictureBox (с помощью Graphics.DrawString). Дорисованный текст при распечатке получается чёткий, сама же таблица с подписями остаётся мутная. В итоге остановился на таком извращении: Полностью рисую таблицу, рисую текст и вывожу на печать PrintDocument'ом. Всё чётко и красиво. Но код получается больно навороченный и не гибкий для изменения таблицы (по мере надобности):vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22         'Рисуем таблицу. Размеры в миллиметрах, т.к. при распечатке они должны соответствовать заявленным         e.Graphics.PageUnit = GraphicsUnit.Millimeter         Dim Pen1 As New Pen(Color.Black, 0.2)         e.Graphics.DrawRectangle(Pen1, tX, tY, tW, tH)         e.Graphics.DrawLine(Pen1, tX, tY + 8, tX + tW, tY + 8)         e.Graphics.DrawLine(Pen1, tX, tY + 22, tX + tW, tY + 22)         e.Graphics.DrawLine(Pen1, tX, tY + 32, tX + tW, tY + 32)         e.Graphics.DrawLine(Pen1, tX, tY + 38, tX + tW, tY + 38)         e.Graphics.DrawLine(Pen1, tX, tY + 46, tX + tW, tY + 46)           e.Graphics.DrawLine(Pen1, tX + 43, tY + 38, tX + 43, tY + 54)         e.Graphics.DrawLine(Pen1, tX + 21, tY + 38, tX + 21, tY + 54)           ' Отрисовываем текст         Dim printFontZag = New Font("Verdana", 11, FontStyle.Regular)         Dim printFontInfR = New Font("Verdana", 10, FontStyle.Regular)         Dim printFontInfB = New Font("Verdana", 10, FontStyle.Bold)           e.Graphics.DrawString("Строка Тест1", printFontZag, Brushes.Black, tX + 22, tY + 1, New StringFormat())         e.Graphics.DrawString("Строка Тест2 ", printFontInfR, Brushes.Black, tX + 10, tY + 9, New StringFormat())         '...         e.Graphics.DrawString("Строка Тест3", printFontInfR, Brushes.Black, tX + 3, tY + 17, New StringFormat()) Как быть? Последний метод единственный верный или можно как-то просто, чётко и красиво распечатать мою таблицу? Спасибо. ----- Работаю в VB.NET 2008

  1. vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Dim a As Integer         Dim Graph As Graphics         Dim P1 As Rectangle         P1.X = 150         P1.Y = 150         P1.Width = 100         P1.Height = 100         a = 10 L1:     Graph = Me.CreateGraphics         Graph.DrawEllipse(Pens.Black, P1)         P1.Inflate(-10, -10)         a = a - 1         If a > 0 Then             GoTo L1         End If     End Sub End ClassПроблема такова: если смотреть по счётчику, то, по идее, должно быть нарисовано 10 окружностей, всё меньше и меньше. Но рисуется 5. Почему - не могу понять, сотню раз уже просмотрел от и до...

  1. Здравствуйте! Как в vb.net рисовать треугольник и трапецию,ведь для них нет отдельных методов ?

  1. Здравствуйте! Такая проблема: при исполнении данной программы сначала делается рисунок на Picture Box, а потом оно закрашивается цветом слоем что выше рисунка. При повторном нажатии на кнопку всё становится как надо. Можно ли сделать так чтоб всё рисовалось как надо с первого раза?vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 Public Class Form1       Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click         Dim Graph As Graphics         Dim R As Single         Dim a As Integer         PictureBox1.BackColor = Color.Aqua         Graph = PictureBox1.CreateGraphics         R = 50 * Rnd()         For a = 0 To 19 Step 1             Graph.DrawEllipse(Pens.Black, PictureBox1.Width * Rnd(), PictureBox1.Height * Rnd(), R, R / 2)         Next     End Sub End Class

  1. На форме командная кнопка (Button) и графическая область (PictureBox). Пользуясь этой темой, написал процедуруvb.net1 2 3 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   PictureBox1.line(10,10)-(100,100) End Subи у меня выводится сообщение "line" не является членом "System.Windows.Forms.PictureBox". Кто сможет, объясните почему программа не работает?

  1. Возник такой вопрос: как нарисовать картинку таким способом vb.net1 gr.DrawImage(New Bitmap(My.Resources.laserBtn), 0, 0)только чуть прозрачной относительно заднего picture box ? Я так понимаю нужно сам битмап трансформировать или как ? Или можно как-то сделать по-другому... Буду благодарен за помощь.

  1. Собсно все в сабже. Как вариант узнать размер текста в px. Но как?