Trazas una línea diagonal. como el modo de escala lo has puesto en milímetros, un valor de 10 es 1 cm.
No veo ningún error... luego deduzco que el problema deriva de otras propiedades que tienes activadas...
Puede aparecer algún error de visionado, pero si es este caso, éste debe ser por otras propiedades que tienes en el picture que le pasas a la función... me refiero a propiedades tales como Drawmode, drawwidth, como es una línea y no una caja en este caso no se considera fillstyle y como le indicas el color blanco, tampoco importa fillcolor...
El otro posible error es del tipo 480, de Autoredraw.... suele deberse al tamaño del control y estar relacionado con el modo de escala del contenedor ... trato de explicártelo...
al establecer el ancho al picture de las medidas del formulario, utilizas la propiedad width y height, si por ejemplo hay tablecido una escala en el form de pixels, y este tiene 1000 pixels de ancho, al pedirle el 'Width' VB te da los twips que es (1000 * screen.TwipsperpixelX) (por ejemplo yo que tengo una resolución de 1600x1200 esta constante (screen.TwipsperpixelX es de 15 , de hecho un vistazo rápido da 15120 twips, los 120 twips restantes son del borde del form (4 píxeles a cada lado: 4*2 * 15= 120 twips)...
...Esto origina entonces que el width de tu picture sea 15120 milimetros (ya que toma el valor que le das ) un ancho así por un alto también grande (15120 milimetros es 15'12 metros) precisa una gran cantidad de memoria para administrar el contenido gráfico, al activar autoredraw por tanto se desborda el tamaño que Mocosft tiene limitado ... En la práctica esto sreporta un error de Autoredraw, con el número 480.
Esto tiene 3 soluciones:
1 - El modo más sencillo (no es el más eficaz y también puede darte problemas si no conoces a fondo como interactúan las escalas) es tener el formulario con la misma escala que el picture. Ahora bien el cambio de escala del formulario debe tenerse en cuenta el tamaño, puede dar también el error 480, si por ejemplo estableces esclas como milimetros o cm. si tu pantalla es de 15 cm de ancho, por ejemplo, y le pasas el ancho en pixels (pongamos 640) interpreta que son 640cm (6'4 metros). Si notienes claro como actúa VB, es mejor que lo modifiques en diseño y veas como afecta a las medidas...
2- Si necesitas mantener el tipo de escala en el formulario por ejemplo en vbpixels (3), entonces puedes usar las propiedades scalewiidth y scaleheight para tomar sus datos, scalewidth y scaleheight mantiene los valores de la medidas de ancho y alto del objeto de acuerdo al modo de escala que tiene el control. ( Mucho ojo, cuando la escala está en VbUser (0), ya que en este caso puedes definir cualquier unidad como medidas para el control, en este caso la constante de escala es libre queda definida por el usuario respecto de los twips ... Para pedir las medidas que tiene la escala debes usar scalewidth y scaleheight en vez de width y height, tal como te indico en el código siguiente... nota que esto no establece el picture del mismo tamaño que el formulario que es lo que intuyo que quieres hacer...
3 - Éste modo es el correcto, con él controlas perfectamente las medidas entre diferentes escalas. No necesitas cambiar la escala del formulario, puede estar en la que precise estar y además logramos que el picture tenga las mismas medidas que el formulario, que es lo que tú (creo) que quieres... te pongo el código, que además creo (recordar vagamente) ya habertelo explicado en alguna ocasión anterior a propósito de otro código donde modificabas propiedades del cliente...
.Width= scaleX(me.Width, me.scalemode, .ScaleMode)
' ...etc...
Como ves, toma la medida origen y cambia su valor desde la escala en la que está a la escala a donde se destina, podemos poner directamente la escala si la conocemos o bien dado que pasar controles por referencia y cada control podría tener una escala distinta, solicitar la escala del control (es lo que hacemos en el código de ejemplo) donde se va apllicar (la del picture). Esto lo hace tomando las constantes que mantiene entre escalas... y las constantes de la pantalla (que dependen de la resolución a la que esté el monitor)... como usas en destino escalas decimales, lo que dibujes se verá del mismo tamaño independientemente de la resolución del monitor... y del monitor en que se vea.
Espero haberte aclarado tus dudas... ya que no identificas el tipo de error que te resulta.
Eso sí, cuando un control debas establecerle varias propiedades piensa en usar mejor el método move, como en el ejemplo, ya que establece las 4 propiedades de una sola vez (no fuerza a repintar la ventana con cada propiedad modificada sino que se hace de una vez, esto es las comprobaciones pertienentes se hacen una sola vez y se redibuja al final, por tanto una sola vez y no 4.
' usa esto....:
call .Move ( 0,0,me.width, me.height)
' O bien esto, si una propiedad no varía:
call .Move( .left, .Top, me.width, me.height) ' si no quieres usar el call debes quitar los paréntesis...
' ....cuando quieras usar esto. Esto fuerza a redibujar el formulario 4 veces, el modo de arriba sólo 1:
.Top = 0
.Left = 0
.Width = Me.Width
.Height = Me.Height