GDI +: Как я черчу линию, это составляет один дюйм в длине на каком-либо устройстве, это продвинуто?

Модульный тест: Проверка, что конкретный компонент (т.е. класс) созданные или модифицированные функции, как разработано. Этот тест может быть ручным или автоматизирован, но не перемещается вне границы компонента.

Интеграционный тест: Проверка, что взаимодействие конкретных компонентов функционирует, как разработано. Интеграционные тесты могут быть выполнены на уровне единицы или системном уровне. Эти тесты могут быть ручными или автоматизированы.

Регрессионный тест: Проверка, что новые дефекты не вводятся в существующий код. Эти тесты могут быть ручными или автоматизированы.

В зависимости от Вашего SDLC (водопад, rup, гибкий, и т.д.) конкретные тесты могут быть выполнены в 'фазах' или могут все быть выполнены, более или менее, одновременно. Например, поблочное тестирование может быть ограничено разработчиками, которые тогда передают код тестерам для интеграционного и регрессионного тестирования. Однако другой подход мог бы иметь разработчиков, делающих поблочное тестирование и некоторый уровень интеграционного и регрессионного тестирования (использующий подход TDD наряду с непрерывной интеграцией, и автоматизировал модульные и регрессионные тесты).

комплект инструментальных средств будет зависеть в основном от кодовой базы, но существует много инструментов с открытым исходным кодом для поблочного тестирования (JUnit). (Ртутный) QTP HP или Silktest Borland являются оба инструментами для автоматизированного интеграционного и регрессионного тестирования.

12
задан Agnel Kurian 27 August 2009 в 14:29
поделиться

1 ответ

The answer became rather long after a couple of edits, so here is the final result:

Setting the PageUnit property of the Graphics object to GraphicsUnit.Pixel and taking in multiplying coordinates with the DpiX and DpiY values will render the expected result on both display and printer devices.

private static void DrawInchLine(Graphics g, Color color, Point start, Point end)
{
    GraphicsUnit originalUnit = g.PageUnit;
    g.PageUnit = GraphicsUnit.Pixel;
    using (Pen pen = new Pen(color, 1))
    {
        g.DrawLine(pen,
            start.X * g.DpiX,
            start.Y * g.DpiY,
            end.X * g.DpiX,
            end.Y * g.DpiY);
    }
    g.PageUnit = originalUnit;
}

You can have it paint on a Form (or some control):

using (Graphics g = this.CreateGraphics())
{
    Point start = new Point(1, 1);
    Point end = new Point(2, 1);
    DrawInchLine(g, Color.Black, start, end);
}

...or send the output to a printer:

PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
    PrintDocument pd = new PrintDocument();
    pd.PrinterSettings = dialog.PrinterSettings;
    pd.PrintPage += (psender, pe) =>
    {
        Point start = new Point(1, 1);
        Point end = new Point(2, 1);
        DrawInchLine(pe.Graphics, Color.Black, start, end);
        pe.HasMorePages = false;
    };

    pd.Print();
}

This does, however, rely on setting the PageUnit.

12
ответ дан 2 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: