Determinando si el mouse está encima de una caja -- # camp codereview Relacionados El problema

Determining if the mouse is on top of a box


0
vote

problema

Español

Tengo 4 cuadros de imágenes y una detección de colisiones para ver si mi mouse está encima de cualquiera de ellos, pero tengo que ejecutar el mismo código 4 veces diferentes, pero simplemente cambiando el nombre. Además, las declaraciones #include "CCar.h" CCar::CCar() { iPropagationBasePtr = new CPropagationBase(); } CCar::~CCar() { DeletePropagationMethod(); } void CCar::DeletePropagationMethod() { delete iPropagationBasePtr; iPropagationBasePtr = NULL; } void CCar::SetFrontWheelPowered() { DeletePropagationMethod(); iPropagationBasePtr = new CFrontWheelPowered(); } void CCar::SetRearWheelPowered() { DeletePropagationMethod(); iPropagationBasePtr = new CRearWheelPowered(); } void CCar::SetFourWheelPowered() { DeletePropagationMethod(); iPropagationBasePtr = new CFourWheelPowered(); } void CCar::PropagateMyCar() { if (iPropagationBasePtr != NULL) { iPropagationBasePtr->Propagate(); } else { printf("CCar::PropagateMyCar(): Don't know how to propagate the car (iPropagationBasePtr= %p). ", iPropagationBasePtr); } } 2655443312 pueden ser regulares #include "CCar.h" CCar::CCar() { iPropagationBasePtr = new CPropagationBase(); } CCar::~CCar() { DeletePropagationMethod(); } void CCar::DeletePropagationMethod() { delete iPropagationBasePtr; iPropagationBasePtr = NULL; } void CCar::SetFrontWheelPowered() { DeletePropagationMethod(); iPropagationBasePtr = new CFrontWheelPowered(); } void CCar::SetRearWheelPowered() { DeletePropagationMethod(); iPropagationBasePtr = new CRearWheelPowered(); } void CCar::SetFourWheelPowered() { DeletePropagationMethod(); iPropagationBasePtr = new CFourWheelPowered(); } void CCar::PropagateMyCar() { if (iPropagationBasePtr != NULL) { iPropagationBasePtr->Propagate(); } else { printf("CCar::PropagateMyCar(): Don't know how to propagate the car (iPropagationBasePtr= %p). ", iPropagationBasePtr); } } 3 sentencias.

  #include "CCar.h"  CCar::CCar() {     iPropagationBasePtr = new CPropagationBase(); }  CCar::~CCar() {     DeletePropagationMethod(); }  void CCar::DeletePropagationMethod() {     delete iPropagationBasePtr;     iPropagationBasePtr = NULL; }  void CCar::SetFrontWheelPowered() {     DeletePropagationMethod();     iPropagationBasePtr = new CFrontWheelPowered(); }  void CCar::SetRearWheelPowered() {     DeletePropagationMethod();     iPropagationBasePtr = new CRearWheelPowered(); }  void CCar::SetFourWheelPowered() {     DeletePropagationMethod();     iPropagationBasePtr = new CFourWheelPowered(); }  void CCar::PropagateMyCar() {     if (iPropagationBasePtr != NULL)     {         iPropagationBasePtr->Propagate();     }     else     {         printf("CCar::PropagateMyCar(): Don't know how to propagate the car (iPropagationBasePtr= %p). ", iPropagationBasePtr);     } } 4  
Original en ingles

I have 4 picture boxes and a collision detection to see if my mouse is on top of any of them, but I have to run the same code 4 different times, but just changing the name. Also, the else if statements can be regular if statements.

PictureBox display = sender as PictureBox; Point drop = PointToClient(Cursor.Position);  if (((displayCollision(drop, pbDisplay1)) == true) && (display != pbDisplay1)) {     display.Location = pbDisplay1.Location;     display.Size = pbDisplay1.Size;      pbDisplay1.Location = defaultLocation;     pbDisplay1.Size = defaultSize; } else if (((displayCollision(drop, pbDisplay2)) == true) && (display != pbDisplay2)) {     display.Location = pbDisplay2.Location;     display.Size = pbDisplay2.Size;      pbDisplay2.Location = defaultLocation;     pbDisplay2.Size = defaultSize; } else if (((displayCollision(drop, pbDisplay3)) == true) && (display != pbDisplay3)) {     display.Location = pbDisplay3.Location;     display.Size = pbDisplay3.Size;      pbDisplay3.Location = defaultLocation;     pbDisplay3.Size = defaultSize; } else if (((displayCollision(drop, pbDisplay4)) == true) && (display != pbDisplay4)) {      display.Location = pbDisplay4.Location;     display.Size = pbDisplay4.Size;      pbDisplay4.Location = defaultLocation;     pbDisplay4.Size = defaultSize; } else  {     display.Location = defaultLocation; } 
  
     
     

Lista de respuestas

1
 
vote

No veo una forma conveniente de hacer un bucle 9988776665544330

  bool CheckAndModify(PictureBox pb) {     if (displayCollision(drop, pb) && (display != pb))     {         display.Location = pb.Location;         display.Size = pb.Size;         pb.Location = defaultLocation;         pb.Size = defaultSize;         return true;     }     return false; }  

y luego:

  bool modified = CheckAndModify(pbDisplay1) ||                 CheckAndModify(pbDisplay2) ||                 CheckAndModify(pbDisplay3) ||                 CheckAndMovify(pbDisplay4);   

O, supongo que un bucle sería posible:

  foreach (var pbDisplay in new[]{pbDisplay1, pbDisplay2, pbDisplay3, pbDisplay4}) {     if (CheckAndModify(pbDisplay))     {         break;     } }   

 

I don't see a convenient way to do a for loop, but you could extract common functionality into a single function:

bool CheckAndModify(PictureBox pb) {     if (displayCollision(drop, pb) && (display != pb))     {         display.Location = pb.Location;         display.Size = pb.Size;         pb.Location = defaultLocation;         pb.Size = defaultSize;         return true;     }     return false; } 

And then:

bool modified = CheckAndModify(pbDisplay1) ||                 CheckAndModify(pbDisplay2) ||                 CheckAndModify(pbDisplay3) ||                 CheckAndMovify(pbDisplay4); 

Or, I suppose a loop would be possible:

foreach (var pbDisplay in new[]{pbDisplay1, pbDisplay2, pbDisplay3, pbDisplay4}) {     if (CheckAndModify(pbDisplay))     {         break;     } } 
 
 

Relacionados problema

6  ¿Está mi delegado definió la forma correcta y necesita transformarse en una mariposa bonita?  ( Is my delegate defined the right way and does it need to transform to a pretty e ) 
He leído tantos Historias de tiempo de cama e inserciones de cómo < fuertes> delegados trabajo y por qué eventos deben ser reemplazados por los delegado...

6  PRIGO DE PODER TICTACTOO EN C #  ( Command prompt tictactoe in c ) 
Escribí un juego básico de comando TIC TAC TOE juego. Quiero saber qué se puede mejorar en términos de modelado y qué errores he hecho (si corresponde). vo...

0  Creación de múltiples objetos del extracto de SQL Server  ( Creating multiple objects from sql server extract ) 
He creado una solución prototipo simplificada como una especie de prueba de concepto antes de comenzar un programa más grande. Aquí están los datos de prueb...

3  Mientras que el bucle usa variables adicionales, ¿se puede limpiar esto?  ( While loop uses extra variables can this be cleaned up ) 
Una pieza de mi programa permite que se utilice el bucle y la incremento de una entidad seleccionada en un bucle de tiempo en otro lugar. Aquí hay una muestra...

7  Versión LINQ del algoritmo de recocido simulado  ( Linq version of the simulated annealing algorithm ) 
Decidí intentarlo e implementar (una versión de) la recocido simulado algoritmo usando solo linq , solo para ver si pudiera. Me encantaría si alguien pudi...

1  TPL HILO FUGA Y FUGA DE MEMORIA  ( Tpl thread leak and memory leak ) 
Estoy tratando de rastrear lo que supongo que debo ser una pérdida de memoria / hilo en uno de mis programas. Mi programa usa una función para cargar un arc...

3  Generador de imágenes de Mandelbrot con iteración paralela  ( Mandelbrot image generator with parallel iteration ) 
Actualmente estoy tratando de optimizar esta clase que tengo para la generación fractal. La ecuación está destinada a ser conectable; He usado z => z*z + c ...

3  Genéricos anulables - implementando secuencialSearchst en C #  ( Nullable generics implementing sequentialsearchst in c ) 
Para fines de aprendizaje, estoy implementando cierto código de SEDEDWICK & AMP; Los algoritmos de Wayne, cuarta edición . Debido a las características del...

35  Demasiados bucles en la aplicación de dibujo  ( Too many loops in drawing app ) 
Tengo un método que tiene muchos bucles: #ifndef __RUNES_STRUCTURES_H #define __RUNES_STRUCTURES_H /* Runes structures. */ struct Game { char board[2...

7  Colecciones vacías en caché  ( Cached empty collections ) 
A menudo necesito devolver las colecciones vacías. Uno de esos días, escribí lo siguiente para devolver una instancia en caché: public static class Array<...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos