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,Width/2-40, Width/2-25, Width / 2 + 40);
Вот код на С#, я так понял для этого нужен перевод из одних координат в другие? Просто координата х идет по центру формы а координату y где -то внизу...
Rsa97, ну насколько я представил, 2 буквы должны быть нарисованы по центру формы(для этого использовать вроде Width/2,Height/2, к ним уже прибавлять координаты концов отрезков соответсвенно)... а между ними должен быть промежуток...
Rsa97, спасибо огромное! А процедуру пересчета координат концов отрезков символьных матриц в экранные координаты в зависимости от используемого видеорежима где-то возможно найти или нужно с нуля писать?
Вот код на С#, я так понял для этого нужен перевод из одних координат в другие? Просто координата х идет по центру формы а координату y где -то внизу...