Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 22
[Gunman] Va por buen camino
Bueno, os voy a proporcionar más información, que eso nunca viene mal para resolver un problema. Pensé que no seria necesaria, pero quizás paso algo por alto y no quiero perder tiempo...
Bueno, he hecho un programa para aproximarte al valor del número PI. Básicamente se basa en la probabilidad. Si tenemos un cuadrado de lado dos y inscribimos una circumferencia en el, el área del cuadrado será 4 (2^2) y la del círculo PI (PI·1^2). Entonces, si hacemos un punto al azar en el cuadrado, la probabilidad de que caiga en el círculo es de PI/4. Bueno, podéis buscar en el google "método montecarlo".
Entonces, cada vez que se elige al azar las coordenadas del punto que se va a pintar, como no, lo pinta (esto no es necesario, pero queda chulo) y ahí está el problema, que al pintar los puntos y pasar una ventana por encima me borra los puntos!
No puedo repintar cada vez, porque en alguna ocasión deberia repintar 9999999 puntos y en la siguiente esos más uno, y así sucesivamente.
En vez de hacerlo en el canvas del form he probado con un PaintBox y tengo el mismo problema. Con un TImage no me pinta el punto cada vez. No se que hacer...
Bueno, pongo el código del programa (sólo lo que nos interesa):
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Point: TPoint;
  I, Counter, Max: Integer;
begin
  Form1.Canvas.Ellipse(0,0,400,400);
  Counter := 0;
  Max := StrToInt(FloatToStr(JvSpinEdit1.Value));
  for I := 1 to Max do
  begin
    Randomize;
    Point.X := Random(400);
    Randomize;
    Point.Y := Random(400);
    if CheckPoint(PointToModPoint(Point)) = True then
    begin
      Counter := Counter+1;
      Form1.Canvas.Pixels[Point.X, Point.Y] := clRed;
    end
    else
      Form1.Canvas.Pixels[Point.X, Point.Y] := clBlue;
    Label2.Caption := Format('Tirs: %d || Encerts: %d', [I, Counter]);
    Label2.Repaint;
  end;
  ShowMessage(FloatToStr((Counter/Max)*4));
end;
__________________
l2prog.co.nr
Responder Con Cita
  #2  
Antiguo 03-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Una sugerencia; Yo sacaría el Randomize fuera del For y pondría sólo 1.
EDITO: Acabo de leer que ya lo han comtenado.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 03-05-2006 a las 09:20:10.
Responder Con Cita
  #3  
Antiguo 04-05-2006
[Gunman] [Gunman] is offline
Miembro
 
Registrado: dic 2004
Ubicación: Pedreguer.
Posts: 355
Poder: 22
[Gunman] Va por buen camino
Muchas gracias, no habia leído estos mensajes y si los hubiese leído me podrian haber evitado tiempo y otro hilo que abrí ayer.
Muchas gracias y perdón!
__________________
l2prog.co.nr
Responder Con Cita
  #4  
Antiguo 14-06-2006
Avatar de Diavlo
Diavlo Diavlo is offline
Miembro
 
Registrado: dic 2005
Posts: 53
Poder: 21
Diavlo Va por buen camino
Por casualidad pase por este hilo y es lo q andaba buscando, solo unas dos cositas mas.
Primero: como cambio el color del fondo del TImage, dibujo unas lineas o cualquier cosa y me sale con fondo blanco.
Segundo: Como se borra todo lo q he dibujado, lo q estoy haciendo es el metodo grafico para problemas de programacion lineal, hasta ahora mi programa grafica solo rectas, pero cuando quiero graficar otras rectas las rectas anteriores sigeun ahi y yo quiero borrarlas.
Responder Con Cita
  #5  
Antiguo 14-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
El color de fondo deberías poder cambiarlo con:

Código Delphi [-]
...  Canvas.Brush.>Color := clRed;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 14-06-2006
Avatar de Diavlo
Diavlo Diavlo is offline
Miembro
 
Registrado: dic 2005
Posts: 53
Poder: 21
Diavlo Va por buen camino
Probe con el siguiente codigo:

Código Delphi [-]
  Image1.Canvas.Brush.Color := clBlack;

Y el fondo sigue siendo blanco, no puedo cambiarle el color de fondo al TIamge.
Responder Con Cita
  #7  
Antiguo 14-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cambiar el color de fondo solo afecta a las operaciones de dibujo posteriores al cambio. Me explico, si cambias el color a negro luego tienes que borrar todo el canvas para que este se cubra de negro:

Código Delphi [-]
  Image1.Canvas.Brush.Color := clBlack;
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Consume memoria, se porque, pero no se como evitarlo... sostro SQL 11 20-03-2007 16:01:43
¿Como imprimir con el canvas ? judoboy Impresión 7 16-09-2006 16:27:22
Como Borra exclusivamente una fila en un String Grid mgaray Varios 1 14-03-2005 22:06:57
como se borra 1 indice con sql User_Baja_2 Conexión con bases de datos 1 23-06-2003 08:04:49
Intentarlo excepto si podemos evitarlo roman Debates 12 26-05-2003 01:03:30


La franja horaria es GMT +2. Ahora son las 13:36:31.


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