Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 10-10-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Ala, dejo el ejemplo entero :

Código Delphi [-]
unit erosi;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;
procedure Erosionar(bmp : TBitmap);
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
        i : integer;
        x,y : integer;
        w,h : integer;
begin
        w := Image1.Width;
        h := Image1.Height;
        Image1.Canvas.Brush.Color := clBlack;
        Image1.Picture.Bitmap.Canvas.FillRect(Rect(0,0,W,H));
        for i := 0 to 10 do
        begin
                x := random(W);
                y := random(H);
                Image1.Canvas.Brush.Color := random($00FFFFFF);
                Image1.Canvas.Ellipse(Rect(x - random(50),y-random(50),x + random(50),y + random(50)));
        end;
end;
procedure Erosionar(bmp : TBitmap);
var
    i, j : integer;
    ori  : TBitmap;
begin
    ori := TBitmap.Create;
    ori.Width  := bmp.Width;
    ori.Height := bmp.Height;
    for i := 0 to bmp.width do
    for j := 0 to bmp.Height do
    ori.Canvas.Pixels[i,j] := bmp.Canvas.Pixels[i,j];
    for i := 0 to bmp.width do
    for j := 0 to bmp.Height do
    with ori.Canvas do
    begin
      if (Pixels[i-1,j-1]  = clBlack) or
         (Pixels[i ,j-1]   = clBlack) or
         (Pixels[i+1,j-1]  = clBlack) or
         (Pixels [i-1,j]   = clBlack) or
         (Pixels [i+1,j]   = clBlack) or
         (Pixels [i-1,j+1] = clBlack) or
         (Pixels [i ,j+1]  = clBlack) or
         (Pixels[i+1,j+1]  = clBlack) then
        bmp.canvas.Pixels[i,j] := clblack else
        bmp.canvas.Pixels[i,j] := Pixels[i,j];
   end;
   ori.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
        Erosionar(Image1.Picture.Bitmap);
end;
end.
saludos de nuevo.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procesamiento De Archivos De Audio Y Video JCVCARMONA Varios 3 22-01-2011 02:20:18
Libreria de procesamiento de imagen JCarlosas Gráficos 3 15-05-2007 17:51:00
procesamiento de voz elcigarra Varios 0 26-01-2006 13:05:29
Como dar Prioridad de Procesamiento a una Aplicación???? AGAG4 Varios 3 19-05-2005 18:15:31
MS intenta patentar el uso de XML en el procesamiento de textos kinobi Debates 4 25-01-2004 04:02:08


La franja horaria es GMT +2. Ahora son las 07:30:23.


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