Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   diversas Lineas y figuras dentro de formulario en delphi en modo diseño (https://www.clubdelphi.com/foros/showthread.php?t=54956)

thelibmx 03-04-2008 20:40:16

diversas Lineas y figuras dentro de formulario en delphi en modo diseño
 
Hola amigos reciban un saludo, no se que tan buena o mala sea esta idea y que tan posible es, la verdad que son pocos los casos que he querido hacerlo y desconozco la manera de como hacerlo o si es posible.

¿Hay alguna manera de poder dibujar lineas y diversas figuras dentro de un formulario en delphi en modo diseño, por ejemplo,algunas lineas para separar algunos campos, algunos cuadrados, rectangulos, incluso circulos, o lineas diagonales, no necesariamente en un form, tal ves dentro de un panel? algo que fuera como el paint, que hubiera algun componente dentro de delphi que le des click al lapiz y puedas trazar las lineas dentro del formulario o un panel?

se que esta medio loca la idea, pero tengo curiosidad por ver si hay algo similar dentro de delphi.

por su atencion gracias :D

cHackAll 03-04-2008 22:20:29

Puedes utilizar un objeto TShape, TBevel o hasta puedes crear un nuevo componente que se ajuste a tus necesidades el cual te sera de utilidad tanto en tiempo de diseño como de ejecución. Tambien es posible que encuentres un componente en la telaraña.

PD; lo que yo haría es crear una imagen y ponerla de fondo; con ello crearía el efecto que yo quisiera (claro esta; sería estático)

Saludos

thelibmx 03-04-2008 22:27:50

tshape esta perfecto !! :D

habra algun componente similar en el cual puedas trazar lineas en foma diagonal?

Gracias cHackAll

cHackAll 03-04-2008 22:36:56

Código:

TShape.Brush.Color = clBlack
 TShape.Brush.Style = bsBDiagonal


thelibmx 03-04-2008 22:41:34

Gracias amigo cHackAll, he aprendido algo mas, pero me referia a si existia algun componente que hiciera lo que hace el lapiz del paint, cres que exista como tal? o tendre q improvisar y simular la linea diagonal :confused:

Caral 03-04-2008 23:06:14

Hola
Dibujando encima de un TImage lineas rectas, tambien se pueden hacer otras figuras.
Código Delphi [-]
unit Unit1;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, ExtCtrls, StdCtrls, ComCtrls, Menus;

type
  TDrawingTool = (dtLine, dtRectangle, dtEllipse, dtRoundRect);
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
    BrushStyle: TBrushStyle;
    PenStyle: TPenStyle;
    PenWide: Integer;
    Drawing: Boolean;
    Origin, MovePt: TPoint;
    DrawingTool: TDrawingTool;
    CurrentFile: string;
    procedure DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  AnteriorBkMode: integer;
begin
  Drawing := True;
  Image1.Canvas.MoveTo(X, Y);
  Origin := Point(X, Y);
  MovePt := Origin;
 with Image1.Canvas do begin
  Brush.Color := clBlack;
  AnteriorBkMode := SetBkMode(Handle, TRANSPARENT);
  SetBkMode(Handle, AnteriorBkMode);
end;

end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
   if Drawing then
  begin
    DrawShape(Origin, MovePt, pmNotXor);
    MovePt := Point(X, Y);
    DrawShape(Origin, MovePt, pmNotXor);
  end;
end;


procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
  with Image1.Canvas do
  begin
    Pen.Mode := AMode;
    case DrawingTool of
      dtLine:
        begin
          Image1.Canvas.MoveTo(TopLeft.X, TopLeft.Y);
          Image1.Canvas.LineTo(BottomRight.X, BottomRight.Y);
        end;
      dtRectangle: Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X,
        BottomRight.Y);
      dtEllipse: Image1.Canvas.Ellipse(Topleft.X, TopLeft.Y, BottomRight.X,
        BottomRight.Y);
      dtRoundRect: Image1.Canvas.RoundRect(TopLeft.X, TopLeft.Y, BottomRight.X,
        BottomRight.Y, (TopLeft.X - BottomRight.X) div 2,
        (TopLeft.Y - BottomRight.Y) div 2);
    end;
  end;
end;


procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    if Drawing then
  begin
    DrawShape(Origin, Point(X, Y), pmCopy);
    Drawing := False;
  end;
end;

end.
Saludos

thelibmx 04-04-2008 01:08:37

Gracias amigo Caral, si mas o menos eso buscaba, solo me preguntaba si habia un componente que lo hiciera en modo diseño, (segun yo entiendo q en modo diseño es cuando puedes ver los formularios y los puedes manipular, y modo ejecucion es cuando corres tu programa), aun asi me sirve de mucho Gracias amigos :D


La franja horaria es GMT +2. Ahora son las 08:35:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi