Конференция "Media" » Проблемы с FloodFill [D7, WinXP]
 
  • DVBogV © (13.03.11 20:23) [0]
    Добрый вечер, уважаемые знатоки:-)
    Дело в том, что я недавно только начал писать программы на Delphy и при написании лабораторной столкнулся с такой проблемой...
    Смысл задания такой: нарисовать замОк, закрашенный серым цветом! Перерыл море литературы уже....При заливке с помощью FloodFill заливается вся область экрана...Хотя разрыва в линиях нет...
    Код "программы":

    unit Unit1;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, ExtCtrls, Menus;

    type
     TRGZ = class(TForm)
       MainMenu1: TMainMenu;
       N1: TMenuItem;
       N2: TMenuItem;
       N3: TMenuItem;
       N4: TMenuItem;
       N5: TMenuItem;
       N6: TMenuItem;
       N7: TMenuItem;
       N8: TMenuItem;
       PopupMenu1: TPopupMenu;
       Y1: TMenuItem;
       N9: TMenuItem;
       N10: TMenuItem;
       procedure N5Click(Sender: TObject);
       procedure N2Click(Sender: TObject);
       procedure N7Click(Sender: TObject);
       procedure N3Click(Sender: TObject);
       procedure N8Click(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     RGZ: TRGZ;

    implementation

    {$R *.dfm}

    procedure TRGZ.N5Click(Sender: TObject);
    begin
    Close;
    end;

    procedure TRGZ.N2Click(Sender: TObject);
    var i,j: integer;
    begin

    With Canvas do begin
    RGZ.Canvas.Pen.Color:=clBlack;
    RGZ.Canvas.Pen.Width:=2;
    RGZ.Canvas.Brush.Color := clRed;
    RGZ.Canvas.FloodFill(431, 99, clBlack,fsBorder);
    End;

    Canvas.MoveTo(500,100);
    Canvas.LineTo(500,130);
    Canvas.MoveTo(450,98);
    Canvas.LineTo(450,130);

    Canvas.MoveTo(520,100);
    Canvas.LineTo(520,130);
    Canvas.MoveTo(430,100);
    Canvas.LineTo(430,130);

    Canvas.MoveTo(400,130);
    Canvas.LineTo(550,130);

    Canvas.MoveTo(400,130);
    Canvas.LineTo(400,200);
    Canvas.MoveTo(550,130);
    Canvas.LineTo(550,200);

    Canvas.Arc( 430,70,520,130,520,100,430,100 );
    Canvas.Arc( 450,90,500,110,500,100,450,100 );
    Canvas.Arc( 400,150,550,250,400,200,550,200);

    Canvas.MoveTo(485,190);
    Canvas.LineTo(490,210);
    Canvas.MoveTo(465,190);
    Canvas.LineTo(460,210);
    Canvas.MoveTo(460,210);
    Canvas.LineTo(490,210);

    Canvas.Arc( 465,180,485,200,485,190,465,190);
    end;

    procedure TRGZ.N7Click(Sender: TObject);
    begin
    ShowMessage('Ðàñ÷åòíî-ãðàôè÷åñêîå çàäàíèå ñòóäåíòà ãðóïïû ÇÏ-71 Áîãàòûðåâà Ä.Â.');
    end;

    procedure TRGZ.N3Click(Sender: TObject);
    begin
    PatBlt(RGZ.Canvas.Handle, 0, 0, RGZ.ClientWidth, RGZ.ClientHeight, WHITENESS);
    end;

    procedure TRGZ.N8Click(Sender: TObject);
    Var T:string;
    begin
    T:='Íàðèñîâàòü íà ôîðìå ïðåäëîæåííîå èçîáðàæåíèå, èñïîëüçóÿ ðàçëè÷íûå ñòèëè è öâåòà äëÿ êèñòè è ïåðà. Äëÿ ðèñîâàíèÿ èñïîëüçîâàòü ñâîéñòâà è ìåòîäû Canvas ôîðìû';
    Canvas.TextOut(10,300,T);
    end;

    end.


    Буду очень признателен за помощь!
  • CrytoGen (13.03.11 21:39) [1]
    повеселил
  • CrytoGen (13.03.11 21:40) [2]
    ты сначала заливку делаешь, а потом рисуешь, надо бы наоборот.
  • DVBogV © (14.03.11 05:04) [3]
    О_о Блин....Я несколько дней убил на то, чтобы понять что не так делаю))))))) Спасибо!
 
Конференция "Media" » Проблемы с FloodFill [D7, WinXP]
Есть новые Нет новых   [120345   +12][b:0][p:0.004]