Здравствуйте! Есть задание:
Выполнить отрисовку первой буквы фамилии студента с использованием процедур генерации отрезков по методу Люка.
Выполнить отрисовку последней буквы имени студента с использованием процедур генерации отрезков по методу Брезенхэма.
Буквы задать координатами концов отрезков, их образующих, в символьных матрицах 50х80 точек.
Буквы отобразить горизонтально, рядом, в центре экрана, через «пробел» (пустая символьная матрица). Для этого использовать процедуру пересчета координат концов отрезков символьных матриц в экранные координаты в зависимости от используемого видеорежима. Цвета отображения букв – разные (любые).
Написал часть кода на C#, отрисовал букву Й. Посмотрите, пожалуйста, правильно ли? смущает условие о процедуре пересчета координат концов отрезков символьных матриц в экранные координаты в зависимости от видеорежима...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Метод, устанавливающий пиксел на форме с заданными цветом и прозрачностью
private static void PutPixel(Graphics g, Color col, int x, int y, int alpha)
{
g.FillRectangle(new SolidBrush(Color.FromArgb(alpha, col)), x, y, 1, 1);
}
//Статический метод, реализующий отрисовку 4-связной линии по алгоритму Брезенхема
static public void Bresenham4Line(Graphics g, Color clr, int x0, int y0, int x1, int y1)
{
//Изменения координат
int dx = (x1 > x0) ? (x1 - x0) : (x0 - x1);
int dy = (y1 > y0) ? (y1 - y0) : (y0 - y1);
//Направление приращения
int sx = (x1 >= x0) ? (1) : (-1);
int sy = (y1 >= y0) ? (1) : (-1);
if (dy < dx)
{
int d = (dy << 1) - dx;
int d1 = dy << 1;
int d2 = (dy - dx) << 1;
PutPixel(g, clr, x0, y0, 255);
int x = x0 + sx;
int y = y0;
for (int i = 1; i <= dx; i++)
{
if (d > 0)
{
d += d2;
y += sy;
}
else
d += d1;
PutPixel(g, clr, x, y, 255);
x++;
}
}
else
{
int d = (dx << 1) - dy;
int d1 = dx << 1;
int d2 = (dx - dy) << 1;
PutPixel(g, clr, x0, y0, 255);
int x = x0;
int y = y0 + sy;
for (int i = 1; i <= dy; i++)
{
if (d > 0)
{
d += d2;
x += sx;
}
else
d += d1;
PutPixel(g, clr, x, y, 255);
y++;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
Bresenham4Line(g, Color.Black, Width/2-25,Height/2-40, Width/2-25, Height / 2 + 40);
Bresenham4Line(g, Color.Black, Width / 2 + 25, Height / 2 - 40,
Width / 2 - 25, Height / 2 + 40);
Bresenham4Line(g, Color.Black, Width / 2 + 25, Height / 2 - 40,
Width / 2 + 25, Height / 2 + 40);
Bresenham4Line(g, Color.Black, Width / 2 - 25, Height / 2 - 60,
Width / 2 , Height / 2 - 50);
Bresenham4Line(g, Color.Black, Width / 2, Height / 2 - 50,
Width / 2 + 25, Height / 2 - 60);
}
}
}