OK. Well. First, Thanks everybody who send a reply for my topic. As JSoftware mentioned, I looked for a line drawing algo then found some theoretic concepts. For example about famous "bresenham line drawing algorithm" or "Digital Differential Analyzer" and of course practical solution SDL_GFX.lineRGBA.
Have you ever been use GDI's or Canvas's LineTo(X, Y) method? If you use you probably notice it's useful for painting and this function's main concept is to take advantage of relative coordinates (xrel, yrel) for drawing from one point to another. So I transfer this logic for SDL and here is my simple code and efficient result:


[pascal]unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, SDL, sdl_gfx, DXClass, SDLUtils, StdCtrls, gl, Sdl_Draw;
type
TForm1 = class(TForm)
Panel1: TPanel;
DXTimer1: TDXTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Screen : PSDL_Surface;
Pushed: boolean;
time1: cardinal;
Frames, TO2: GLInt;
seconds, fps : GLFloat;
X, Y: integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
SDL_putenv('SDL_VIDEODRIVER=windib');
SDL_putenv(PChar('SDL_WINDOWID=' + inttostr(Integer(Panel1.Handle))));
SDL_Init(SDL_INIT_VIDEO);
Screen := SDL_SetVideoMode(Panel1.ClientWidth, Panel1.ClientHeight, 32,
SDL_SWSURFACE or SDL_DOUBLEBUF);
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
event: TSDL_Event;
RECT: TSDL_Rect;
begin
//Let's Paint
if (SDL_PollEvent(@event) > 0 ) then
begin
case event.type_ of
SDL_MOUSEBUTTONDOWN:
begin
X := event.motion.x;
Y := event.motion.y;
pushed := true;
end;

SDL_MOUSEBUTTONUP: pushed := false;

SDL_MOUSEMOTION:
if pushed then
begin
RECT := SDLRect(0, 0, Panel1.ClientWidth, Panel1.ClientWidth);
// SDL_Gfx.filledCircleRGBA(Screen, event.Motion.x, event.Motion.y, 5, 255,0,0,255);
event.Motion.xrel := X;
event.Motion.yrel := Y;
SDL_Gfx.lineRGBA(screen, event.Motion.xrel, event.Motion.yrel, event.Motion.x, event.Motion.y, 255,0,0,255);
SDL_UpdateRects(Screen, 1, @RECT);
X := event.Motion.x;
Y := event.Motion.y;
end;
end;

//Lets calc to FPS
Inc( Frames );
time1 := SDL_GetTicks;
if ( time1 - TO2 >= 1000 ) then
begin
seconds := ( time1 - TO2 ) / 1000.0;
fps := Frames / seconds;
Self.Caption := IntToStr(frames) + ' frames in ' + FloatToStr(seconds) + ' seconds = ' + FloatToStr(FPS) + ' FPS';
TO2 := time1;
Frames := 0;
end;
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SDL.SDL_FreeSurface(Screen);
SDL_Quit;
end;

end.[/pascal]