elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Java [Guía] Patrones de diseño - Parte 1


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 358
41  Programación / .NET / Re: Encontrar salas de chat con C# en: 5 Julio 2017, 10:49
Pero qué sala. Yo hablo de un servidor. Un servidor qe se dedica a guardar salas, conectar usuarios, y todo lo que quieras.
42  Programación / .NET / Re: Encontrar salas de cat con C# en: 4 Julio 2017, 22:37
Cómo que una sala le informa de salas disponibles.
Es el servidor quien le informa.
El cliente debe saber en todo momento la dirección del servidor (o pedirsela al usuario, por ejemplo, como ocurre en IRC)
43  Programación / .NET / Re: Encontrar salas de cat con C# en: 4 Julio 2017, 19:59
El cliente obtiene la información del servidor. Si el servidor conoce las salas, el cleinte puede hacer una petición de esas salas, y el servidor, responderle con los datos que sean.
44  Programación / .NET / Re: Encontrar salas de cat con C# en: 4 Julio 2017, 19:22
En algún lugar se guarda la información de la sala. Si es en el servidor, pues el servidor tiene una lsita de salas. Si las salas las hostea un usuario, usualmente le comunicará al servidor la existencia de esa sala (salvo que al sala sea solo accesible por IP, por ejemplo). Si se lo comunica al servidor, nuevamente, el servidor tiene una lista. Puede no tener lista, hay muchas formas de hacerlo. Hazlo como mejor te venga :o
45  Programación / .NET / Re: GDI+. Hacer zoom respecto a la posición del Mouse en evento MouseWheel de un Pic en: 4 Julio 2017, 19:14
Esque es lo mismo. La "location" es exactamente lo mismo que dibujarla transladada. Es lo mismo. Com ote digo, ve por pasos. Primero, transládalo. Todo. Sea bitmap, o vectorial. Transládalo. Hecho eso, nuevamente, es prácticamente lo mismo.
46  Programación / .NET / Re: GDI+. Hacer zoom respecto a la posición del Mouse en evento MouseWheel de un Pic en: 4 Julio 2017, 01:13
Un ejemplo, en javascript:

Pega el código en el cuadro de texto y haz click en "Execute" en http://ivancea.xyz/canvasScript.html
El mismo código lo tienes en los "templates" a nombre de "Loading images".

Es lo que tú has dicho, zoom centrado en el ratón. Además, tiene para desplazar con click. No es 1 imagen, sinó que son líneas e imágenes dibujadas al momento.
En ese ejemplo, las transformaciones las ejecuto antes de dibujar, con lo que afectan a todo lo que dibujaré después. Aquí primero aplico la translación, y después la escala.

Está todo un poco comentado, pero bueno, lo importante son las ecuaciones.

Código
  1. // Canvas: 500x500
  2. // Global variable: 'global'
  3. var canvas = document.getElementById("canvas");
  4. var context = canvas.getContext("2d");
  5.  
  6. function clear(){
  7.    context.setTransform(1, 0, 0, 1, 0, 0);
  8.    context.fillStyle = "rgb(255,255,255)";
  9.    context.rect(0,0,500,500);
  10.    context.fill();
  11. }
  12.  
  13. function line(x,y, toX,toY, r,g,b){
  14.    context.strokeStyle = "rgb("+r+","+g+","+b+")";
  15.    context.beginPath();
  16.    context.moveTo(x,y);
  17.    context.lineTo(toX,toY);
  18.    context.stroke();
  19. }
  20.  
  21. /* VARIABLES */
  22.  
  23. var image = new Image();
  24. var isImageLoaded = false;
  25.  
  26. var mousePosition = false;
  27.  
  28. var scale = 1;
  29. var translation = {x: 0, y: 0};
  30.  
  31.  
  32. /* FUNCTIONS */
  33.  
  34. function transform(){
  35.    context.translate(translation.x, translation.y);  
  36.    context.scale(scale, scale);
  37. }
  38.  
  39. function draw(){
  40.    if(isImageLoaded){
  41.        for(var i=0; i+image.width<500; i+=image.width+1)
  42.            for(var j=0; j+image.height<500; j+=image.height+1)
  43.                context.drawImage(image, i,j);
  44.        for(var i=image.width+1; i<500; i+=image.width+1)
  45.            line(i,0, i,500, 0,0,0);
  46.        for(var i=image.height+1; i<500; i+=image.height+1)
  47.            line(0,i, 500,i, 0,0,0);
  48.    }
  49. }
  50.  
  51. /* IMAGE LOADING */
  52.  
  53. image.onload = function(){
  54.    isImageLoaded = true;
  55.  
  56.    clear();
  57.    transform();
  58.    draw();
  59. }
  60.  
  61. image.src = "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQzdkT4Kr18U9B9TUUaszth60IPWc2BnmkvDi_bgW9QiSDDkLG5EyobT8U";
  62.  
  63.  
  64. /* EVENTS */
  65.  
  66. canvas.addEventListener("wheel", function(event){
  67.    var x = event.clientX - canvas.offsetLeft,
  68.        y = event.clientY - canvas.offsetTop;
  69.  
  70.    var imageMousePosition = { /* Esta es la posición del ratón con respecto a la imagen sin escalar. */
  71.        x: (x - translation.x)/scale,
  72.     y: (y - translation.y)/scale
  73.    };
  74.  
  75.    if(event.deltaY < 0){ /* Aquí simplemente calculamos el nuevo zoom */
  76.        scale *= 1.1;
  77.    }else{
  78.        scale *= 0.9;
  79.    }
  80.  
  81.    translation.x = x - imageMousePosition.x*scale; /* Aquí ponemos la nueva translación como ya comenté, */
  82.    translation.y = y - imageMousePosition.y*scale; /* la diferencia entre la posición del ratón real y la posición en la imagen escalada */
  83.  
  84.    clear();
  85.    transform();
  86.    draw();
  87. });
  88.  
  89. canvas.addEventListener("mousemove", function(event){
  90.    if(mousePosition !== false){
  91.        var x = event.clientX - canvas.offsetLeft,
  92.            y = event.clientY - canvas.offsetTop;
  93.  
  94.        translation.x += x - mousePosition.x;
  95.        translation.y += y - mousePosition.y;
  96.  
  97.        mousePosition.x = x;
  98.        mousePosition.y = y;
  99.  
  100.        clear();
  101.        transform();
  102.        draw();
  103.    }
  104. });
  105.  
  106. canvas.addEventListener("mousedown", function(event){
  107.    if(event.button == 0){
  108.        mousePosition = {
  109.            x: event.clientX - canvas.offsetLeft,
  110.            y: event.clientY - canvas.offsetTop
  111.        };
  112.    }
  113. });
  114.  
  115. canvas.addEventListener("mouseup", function(event){
  116.    if(event.button == 0){
  117.        mousePosition = false;
  118.    }
  119. });

Probablemente no sea igual a lo que buscas para C#, pero la lógica es la misma. Y bueno, como ves, apenas son 2 líneas para X y 2 para Y. No es muy complicado, pero el tema es entenderlo.
47  Programación / .NET / Re: GDI+. Hacer zoom respecto a la posición del Mouse en evento MouseWheel de un Pic en: 4 Julio 2017, 00:01
El tema es dividir el proceso en pasos.
En primer lugar: es una imagen vectorial, bien, pero: ¿La puedes escalar? ¿La puedes mover? Me refiero, a si tienes el algoritmo para ello o si puedes hacerlo. En caso afirmativo, eso ya no es un problema.

Entiendo lo que quieres hacer, y eso es lo que expliqué en el primer mensaje.
Entrando a detalles... Probablemente lo que te interese es, teniendo el origen de la transformación en la esquina superior izquierda de la imagen (en adelante, (0,0), el origen), aplicar una escala primero, para hacer grande la imagen, y luego la translación que comenté antes.

Puedes empzar haciendo que el zoom siempre se haga en el centro de la imagen. Si logras esto, lo otro es casi igual.



La idea sería esa.

Edito: Es evidente que la imagen no la hice bien "del todo", sinó al escalarlo, también se saldría por arriba de la pantalla. Pero, you know, paint D:
48  Programación / ASM / Re: Duda usando macros en GAS en: 3 Julio 2017, 23:49
El error es la llamada en sí o una instrucción dentro del macro? Verifícalo (puedes comentar todas las instrucciones del amcro a ver si sigue dando el problema?
De ser una instrucción, averigua exactamente cual.


PD: longitud es sin 'u' entre la g y la i :o
49  Programación / .NET / Re: GDI+. Hacer zoom respecto a la posición del Mouse en evento MouseWheel de un Pic en: 3 Julio 2017, 23:31
Tienes un punto en una imagen (el cursor, con respecto a la imagen), con su X y su Y.
Si escalas esa imagen, ¿sabrías decir dónde está ese mismo punto ahora?

Ya tenemos el nuevo punto. Ahora hay que colocar ese nuevo punto de la imagen para que coincida con la posición del cursor (con respecto a la pantalla). ¿Podrías hacerlo?

Y si no se me queda nada, listo.

¿Puedes responder a esas preguntas? Si sí, entonces hazlo paso a paso, y verás que sale solo.
Si no, di cuál y por qué, para que te podamos ayudar.

En estos casos, ver el proceso visualmente es lo mejor. Y hacerse las preguntas correctas. ¿Qué es exactamente lo que queremos? En este caso, es escalar, y mover la imagen de forma de que coincida con el cursor, nada más.

Oh, y cuando tengas una duda así, es preferible que te abstengas de poner tanto código. Una pregunta bien hecha y concisa es más fácil de responder que poner un programa (cosa que puede desmotivar a la hora de responder :D)
50  Programación / Desarrollo Web / Re: Ayuda con javascript - Sprite canvas en: 3 Julio 2017, 21:27
Basta hacer el cálculo de esta ecuación: ~~(aTimer*10)%10.
Sea lo que sea aTimer, el resultado saldrá entre 0 y 10. Dado que lo multiplicas por 10, saldrá entre 0 y 90 (0, 10, 20...), que es la "transición" que tú ves.

Necesitas otra ecuación. Tú quieres, supongo, que cada X segundos, cambie el sprite. Para ello, sería algo como:
Suponiendo que aTimer sean los segundos transcurridos.
Código
  1. Math.floor(aTimer*(1/2 /* cada 2 segundos */))%2 * 100
Eso dará, cada 2 segundos, 0 o 100. En fin, es jugar con la ecuación.

De todos modos, si vuelves a tener un problema así, revisa las ecuaciones. Nada de lo que ocurre en tu programa es un "no funciona como yo quiero". Funciona todo como tú le has dicho; revisa por qué ;D
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 358
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines