|
91
|
Sistemas Operativos / Windows / Documento de texto enriquecido no está disponible en el menú Nuevo
|
en: 16 Marzo 2017, 20:56 pm
|
que tal, tengo Windows 7 64 bits y no tengo disponible en el menú Nuevo del menú contextual del Escritorio el "Documento de texto enriquecido"
Buscando en Google, he encontrado que modificando el registro en HKEY_CLASSES_ROOT, elijo cualquier extensión de archivo. Si no tiene la clave [ShellNew] la creo, y en esta clave añado un valor de cadena con nombre "NullFile", el tipo de archivo elegido aparecerá en el menú Nuevo.
Sin embargo, y atención a esto, desde otro ordenador también con Windows 7 que SI dispone del Documento de texto enriquecido (RTF) en el menú nuevo, no aparece tal valor "NullFile". Así que no creo que el que no tenga dicho valor sea la razón de que no me aparezca en el menú del otro ordenador.
¿Alguien sabe porqué y como puedo añadirlo?
El "NullFile" está en la extensión .bmp y sin embargo no aparece en el menú.
Creo recordar que había un cuadro en no se donde donde se podía elegir los elementos de este menú, pero quizás me equivoque.
Gracias
|
|
|
92
|
Programación / .NET (C#, VB.NET, ASP) / obtener celdas seleccionadas (DataGridView)
|
en: 14 Marzo 2017, 09:37 am
|
que tal, necesito obtener las celdas seleccionadas al hacer click de un DataGridView. He probado con este código pero sólo me devuelve la celda donde hice clic. Dim celda As New List(Of String) For Each cell As DataGridViewCell In Me.DataGridView1.SelectedCells celda.Add(CStr(cell.ColumnIndex & "," & cell.RowIndex)) Next MessageBox.Show(String.Join("; ", celda))
la idea es que al seleccionar un grupo de celdas al hacer clic, introducir una serie de valores automáticos en dichas celdas, pero necesito saber cuales están seleccionadas para introducirles el valor. Ademas DataGridView1.SelectedCells.Count sólo me devuelve el valor 1 al hacer clic en el evetno DataGridView1_CellMouseClick, aunque haya más de una celda seleccionada. gracias
Bueno, parece que solo funciona desde un evento distinto de CLICK, puedo obtener las celdas seleccionadas desde otros eventos como MOUSEUP o MOUSEDOWN. Al parecer al hacer click sobre una celda del grupo de celdas seleccionadas, se deseleccionan todas las celdas y queda solamente 1 celda seleccionada, entonces siempre devuelve 1. También devolvería todas las celdas desde un botón, por ejemplo: How to: Get the Selected Cells, Rows, and Columns in the Windows Forms DataGridView Control
|
|
|
93
|
Programación / .NET (C#, VB.NET, ASP) / Conectar con gmail desde NET
|
en: 18 Febrero 2017, 16:56 pm
|
hola Estoy intentado conectar con mi cuenta de correo GMAIL desde Net pero no hay manera. Consiguo conectar pero el acceso es bloqueado y recibo un mensaje en el correo gmail notificando intentos de inicio de sesión bloquados.El código que he usado es el siguiente: Imports Limilabs.Client.IMAP Module Module1 Private Const _server As String = "imap.gmail.com" Private Const _user As String = "USER" Private Const _password As String = "PASSWORD" Sub Main() Using imap As New Imap imap.ConnectSSL(_server, 993) ' imap.Connect(_server) ' Use overloads or ConnectSSL if you need to specify different port or SSL. imap.Login(_user, _password) ' You can also use: LoginPLAIN, LoginCRAM, LoginDIGEST, LoginOAUTH methods, ' or use UseBestLogin method if you want Mail.dll to choose for you. Dim folders As List (Of FolderInfo ) = imap. GetFolders() ' List all folders on the IMAP server Console.WriteLine("Folders on IMAP server: ") Dim status As FolderStatus = imap. Examine(folder. Name) ' Examine each folder for number of total and recent messages. Console.WriteLine(String.Format("{0}, Recent: {1}, Total: {2}", _ status.MessageCount, _ status.Recent)) ' Display folder information Next ' You can also Create, Rename and Delete folders: imap.CreateFolder("Temporary") imap.RenameFolder("Temporary", "Temp") imap.DeleteFolder("Temp") imap.Close() End Using Console.ReadLine() End Sub End Module
Desde mi cuenta gmail he habilitado el acceso IMAP. Y la configuración que gmail te recomienda para correo entrante es la siguiente: Servidor de correo entrante (IMAP)
imap.gmail.com Requiere SSL: Sí Puerto: 993
Ver: Leer mensajes de Gmail desde otros clientes de correo mediante IMAPHe usado la librería Mail.dll. Para más información entrar aquí: Download emails using POP3 in .NETy para descarga de la librería y ejemplos de uso aquí: Mail.dll - .NET email component (IMAP, POP3, S/MIME)NOTA: Desde Windows Live ocurre exáctamente igual. Gracias
Lo he testado desde una cuenta hotmail y funciona. Hay que cambiar el servidor IMAP por "imap-mail.outlook.com"
Volví a intentarlo usando POP3 Pero recibo el siguiente mensaje de error [AUTH] Web login required: https://support.google.com/mail/answer/78754
|
|
|
94
|
Informática / Tutoriales - Documentación / Reparar Micro SD dañada (desde windows)
|
en: 12 Febrero 2017, 06:30 am
|
hola Hace unos días windows no detectaba mi tarjeta Micro-SD. Al hacer clic en la unidad aparecía un mensaje de windows ofrenciendo formatear. Por supuesto le di a ' Cancelar'. Pensando que el comando CHKDSK en consola no serviría al ser ilegible, busco en Google -Reparar micro SD-. Los resultados me llevan a páginas donde se ofrece usar programas. Tras bajarme uno de ellos veo que no repara el SD si no que se limita a rastrear el contenido y crear una lista de archivos recuperables y sin la jerarquía de carpetas. Así que lo cierro y lo dejo estar. Decidí probar el comando CHKDSK en modo reparación y recuperé el SD. Con todos las carpetas y archivos. COMO REPARAR UNA MICRO-SD DESDE WINDOWSSin necesidad de usar programas externos, ni descargar nada. - Pulsa el botón INICIO de Windows
- Escribe 'cmd.exe' y cuando lo veas en la lista dale con el botón derecho y ejecútalo como Administrador
- En la ventana negra que se abre (la consola), escribe:Por ejemplo, si tu MICRO-SD está en la unidad H: pones: y luego pulsa ENTER. Inmediatamente chkdsk.exe, una aplicación de windows que se encuentra en system32, comenzará a comprobar la unidad y reparar los errores que contenga. Una vez acabe, la unidad ya será accesible. En el caso que hayan archivos dañados y se quiera recuperar información , puedes usar /R. Ocurre cuando no puedes abrir una carpeta que debería ser accesible o no se encuentran archivos que deberían estar en determinado directorio. Windows no pudo registrar debidamente los últimos archivos creados, debido a una detención de la escritura repentina. /R Encuentra los sectores dañados y recupera la información legible.(implica /F) Este proceso es más lento. El uso de de CHKDSK ya lo conocía, es super conocido, pero no pensé que pudiera reparar un SD ilegible, pero así ha sido y por este motivo lo comparto aquí, para todo aquel que le ocurra lo mismo y quiera recuperar su SD dañado. Si usas este proceso de reparación con unidades de disco o particiones en uso como C:/ seguramente recibirás un mensaje invitándote a realizar la comprobación la próxima vez que se inicie el sistema. Esto es que cuando reinicies y antes de que se inicie sesión de Windows, CHKDSK hará la comprobación de la unidad. RECOMENDACIONESPara evitar errores en el futuro, recomiendo expulsar los pendrives, discos externos USB y tarjeta SD de forma segura. Puedes hacerlo simplmente pulsando sobre el icono en forma de USB que hay en área de notificación de windows (al lado del reloj), y seleccionar la unidad a extraer de forma segura Ocurre que si windows está escribiendo en la unidad si lo sacas de golpe antes de que se modifique el registro de archivos, se corrompe y luego puede ocurrir que el disco, pendrive, o tarjeta SD sea inaccesible o bien que alguna carpeta que contenga no sea accesible a causa de un error en la escritura del registro de archivos de la unidad. En caso de poder acceder al disco pero que una carpeta que creamos y que debería contener x archivos no se accesible por un error, para recuperar los archivos que ésta contenía usa el comando CHKDSK y aplica el comando /R. Si se da el caso que no puede expulsar la unidad de forma segura porque algún proceso la está usando, cierra los programas que pueda estar accediendo a algún archivo en la unidad. Si aún así sigues sin poder extraer de forma segura, seguramnte sea el mismo Explorer.exe. En tal caso puedes cerrarlo y volverlo a abrir: Ejecuta la consola (CMD.EXE) desde inicio o Run (Tecla Windows + R) y escribre lo siguiente: TASKKILL /F /IM Explorer.exe (para cerrar explorer.exe) (para abrir explorer.exe de nuevo) También puedes ejecutar taskmgr.exe o bien pulsar [CTRL+ ALT+ SUPR] y selecciona Iniciar Administrador de Tareas. Desde ahí puedes cerrar Explorer y luego abrir nuevamente Explorer.exe desde el menú Abrir/Nueva tarea(Ejecutar...). Luego vuelve a intentar expulsar la unidad de forma segura. · No se debe escribir en mayúsculas >aquí las reglas del foro -Engel Lex
|
|
|
95
|
Programación / Desarrollo Web / Donde se encuentras las referencias de creación o descarga de cookies
|
en: 23 Enero 2017, 22:18 pm
|
hola buenas
Tengo un código simple HTML de una página web. El cual al abrirlo con el navegador, éste crea cookies.
Con seguridad no son scripts los que los crea pues he eliminado todas las direcciones a archivos javascript. Dicho esto no se como lo hace a no ser que si es mediante javascript, se descargue desde una url href.
Lo que necesito es algún truco o algo que me permita averiguar que debo eliminar del código HTML para que no genere cookies.
(Se que se pueden bloquear desde el navegador pero no es lo que me interesa)
Gracias
|
|
|
97
|
Sistemas Operativos / Windows / Los editores de 64 bits se atascan
|
en: 13 Diciembre 2016, 11:43 am
|
hola tengo windows7 de 64bits y los editores de 64bits se atascan de vez en cuando al escribir durante un segundo. Me pasa también con Photoshop de 64bits.
No se que puede ser. No es el OS porque tengo el mismo en otro ordenador y va bien. No se si será alguna configuración del bios.
gracias por la ayuda
|
|
|
98
|
Sistemas Operativos / Windows / Notepad se atasca al escribir
|
en: 21 Noviembre 2016, 10:30 am
|
hola, tengo este problema con el Notepad, cuando escribo se atasca durante un par de segundo de vez en cuando.
Voy escribiendo y de pronto aunque pulse las teclas no escribe durante un par de segundos. Luego funciona de nuevo correctamente y tras escribir o dejar de escribir un rato al escribir de nuevo vuelve a bloquearse ese par de segundos.
Solo me pasa con el Notepad. Es raro, nunca me ha pasado con ningún sistema.
Estoy usando W764bits.
gracias
|
|
|
99
|
Foros Generales / Dudas Generales / Vender por Internet como particular. Necesito consejos.
|
en: 16 Noviembre 2016, 15:02 pm
|
hola
Voy a vender por Internet como particular poniendo un anuncio. Es un objeto caro. En principio me gustaría entregar en mano en mi ciudad, porque dudo de enviar por correo no vayan a romperlo y luego devolverlo diciendo que estaba roto.
Mi duda es si lo envío por correo, puedan hacer eso, ¿Qué me aconsejan?. No se si se puede poner -no se admiten devoluciones- o algo así.
Nunca he vendido nada y no conozco los pasos a seguir para evitar problemas de cualquier tipo. ¿Si entrego en mano debo hacer un firmar un papel de conformidad o algo así ? No se.
Es que está en perfectas condiciones y no quiero que luego me vengan con pegas y me lo devuelvan roto. Más que nada es eso.
gracias
|
|
|
100
|
Programación / .NET (C#, VB.NET, ASP) / Duda con PictureBox y Saturación de Color
|
en: 16 Septiembre 2016, 16:45 pm
|
Buenas amigos, estoy intentando saturar una imagen y lo he conseguido pero el programa tarda mucho en procesar los cambios. Estoy orgulloso de lo que he conseguido porque no ha sido fácil averiguarlo, pero no va bien. He usado los miembro ColorMatrix y SetColorMatrix y he conseguido crear una matriz que realiza la saturación de una imagen, pero al usar un TrackBar el proceso de los cambios es demasiado lento. S = (TrackBar1.Value) + 100
Dim Rojo As Single = CSng(299 * (100 - S) / 100000) Dim Verde As Single = CSng(587 * (100 - S) / 100000) Dim Azul As Single = CSng(114 * (100 - S) / 100000)
S = CSng(S / 100) Dim colorMatrixVal As Single()() = { New Single() {Rojo + S, Rojo, Rojo, 0, 0}, _ New Single() {Verde, Verde + S, Verde, 0, 0}, _ New Single() {Azul, Azul, Azul + S, 0, 0}, _ New Single() {0, 0, 0, 1, 0}, _ New Single() {0, 0, 0, 0, 1}} Este lo he hecho como ejemplo para ponerlo aquí: Imports System.IO Imports System.Drawing.Imaging Public Class Form1 Private originalBitmap As Bitmap = Nothing Private previewBitmap As Bitmap = Nothing Private resultBitmap As Bitmap = Nothing Dim PictureBox1 As New PictureBox With {.Location = New Point(10, 10), .Size = New Size(400, 240), .SizeMode = PictureBoxSizeMode.StretchImage, .BackColor = Color.DarkGray} Dim Button1 As New Button With {.Location = New Point(PictureBox1.Width + 20, 10), .Text = "Cargar"} Dim Button2 As New Button With {.Location = New Point(PictureBox1.Width + 20, 40), .Text = "Guardar"} Dim TrackBar1 As New TrackBar With {.Location = New Point(10, PictureBox1.Height + 20), .AutoSize = True, .Size = New Size(PictureBox1.Width, 10), .TickStyle = TickStyle.TopLeft, .BackColor = Color.DarkGray, .TickFrequency = 50, .Maximum = 100, .Minimum = -100, .Value = 0, .Orientation = Orientation.Horizontal} Dim Label1 As New Label With {.Location = New Point(TrackBar1.Width + 20, TrackBar1.Top + 10), .AutoSize = True, .Text = "0", .Font = New Font("Arial", 20, FontStyle.Bold)} Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load Me.Controls.Add(PictureBox1) Me.Controls.Add(Button1) Me.Controls.Add(Button2) Me.Controls.Add(TrackBar1) Me.Controls.Add(Label1) Label1.BringToFront() Me.Size = New Size(520, 400) AddHandler TrackBar1.ValueChanged, AddressOf TrackBar1_ValueChanged AddHandler Button1.Click, AddressOf Button1_Click AddHandler Button2.Click, AddressOf Button2_Click End Sub Private Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs) Label1.Text = TrackBar1.Value.ToString() AplicarSaturacion(True) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Dim ofd As New OpenFileDialog() ofd.Title = "Abrir imagen" ofd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png" ofd.Filter += "|Bitmap Images(*.bmp)|*.bmp" If ofd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Dim streamReader As New StreamReader(ofd.FileName) originalBitmap = DirectCast(Bitmap.FromStream(streamReader.BaseStream), Bitmap) streamReader.Close() previewBitmap = Image.FromFile(ofd.FileName) PictureBox1.Image = previewBitmap AplicarSaturacion(True) End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) AplicarSaturacion(False) If resultBitmap IsNot Nothing Then Dim sfd As New SaveFileDialog() sfd.Title = "Guardar imagen" sfd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png" sfd.Filter += "|Bitmap Images(*.bmp)|*.bmp" If sfd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Dim fileExtension As String = Path.GetExtension(sfd.FileName).ToUpper() Dim imgFormat As ImageFormat = ImageFormat.Png If fileExtension = "BMP" Then imgFormat = ImageFormat.Bmp ElseIf fileExtension = "JPG" Then imgFormat = ImageFormat.Jpeg End If Dim streamWriter As New StreamWriter(sfd.FileName, False) resultBitmap.Save(streamWriter.BaseStream, imgFormat) streamWriter.Flush() streamWriter.Close() resultBitmap = Nothing End If End If End Sub Public Sub AplicarSaturacion(Byval preview As Boolean) If previewBitmap Is Nothing Then Return End If Dim Imagen As Image = previewBitmap Dim Pic As PictureBox = PictureBox1 Dim Grafico As Graphics Dim Rectangulo As Rectangle Pic.Image = New Bitmap(Pic.Width, Pic.Height, PixelFormat.Format32bppArgb) Grafico = Graphics.FromImage(Pic.Image) Rectangulo = New Rectangle(0, 0, Pic.Width, Pic.Height) Grafico.DrawImage(Imagen, Rectangulo) Dim S As Single S = (TrackBar1.Value) + 100 Dim Rojo As Single = CSng(299 * (100 - S) / 100000) Dim Verde As Single = CSng(587 * (100 - S) / 100000) Dim Azul As Single = CSng(114 * (100 - S) / 100000) S = CSng(S / 100) Dim colorMatrixVal As Single()() = { New Single() {Rojo + S, Rojo, Rojo, 0, 0}, _ New Single() {Verde, Verde + S, Verde, 0, 0}, _ New Single() {Azul, Azul, Azul + S, 0, 0}, _ New Single() {0, 0, 0, 1, 0}, _ New Single() {0, 0, 0, 0, 1}} Dim colorMatrix As New ColorMatrix(colorMatrixVal) Dim ImagenAtributos As New ImageAttributes ImagenAtributos.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap) Grafico.DrawImage(Imagen, Rectangulo, 0, 0, Imagen.Width, Imagen.Height, GraphicsUnit.Pixel, ImagenAtributos) Pic.Refresh() resultBitmap = Pic.Image End Sub End Class
Va bien pero al deslizar el TrackBar se producen trompicones al moverlo. He conseguido convertir por mi cuenta un código de VB viejo a NET que usa API. Que no sé, seré el único que lo he hecho porque puse en google -SetColorAdjustment VB.NET- y ni rastro, las declaraciones que encontraba eran como en VB6. Conseguí crear un código basado en API con SetColorAdjustment y GetColorAdjustment , y funciona bien. Los cambios son suaves pero tiene un problema y es que no puedo guardar los cambios y no consigo refrescar el PictureBox correctamente. Este es el código: Imports System.IO Imports System.Drawing.Imaging Imports System.Runtime.InteropServices Imports WindowsApplication1.NativeMethods Public Class Form1 Private originalBitmap As Bitmap = Nothing Private previewBitmap As Bitmap = Nothing Private resultBitmap As Bitmap = Nothing Dim picLoad As Boolean Dim PictureBox1 As New PictureBox With {.Location = New Point(10, 10), .Size = New Size(400, 240), .SizeMode = PictureBoxSizeMode.StretchImage, .BackColor = Color.DarkGray} Dim Button1 As New Button With {.Location = New Point(PictureBox1.Width + 20, 10), .Text = "Cargar"} Dim Button2 As New Button With {.Location = New Point(PictureBox1.Width + 20, 40), .Text = "Guardar"} Dim TrackBar1 As New TrackBar With {.Location = New Point(10, PictureBox1.Height + 20), .AutoSize = True, .Size = New Size(PictureBox1.Width, 10), .TickStyle = TickStyle.TopLeft, .BackColor = Color.DarkGray, .TickFrequency = 50, .Maximum = 100, .Minimum = -100, .Value = 0, .Orientation = Orientation.Horizontal} Dim Label1 As New Label With {.Location = New Point(TrackBar1.Width + 20, TrackBar1.Top + 10), .AutoSize = True, .Text = "0", .Font = New Font("Arial", 20, FontStyle.Bold)} Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load Me.Controls.Add(PictureBox1) Me.Controls.Add(Button1) Me.Controls.Add(Button2) Me.Controls.Add(TrackBar1) Me.Controls.Add(Label1) Label1.BringToFront() Me.Size = New Size(520, 400) AddHandler TrackBar1.ValueChanged, AddressOf TrackBar1_ValueChanged AddHandler Button1.Click, AddressOf Button1_Click AddHandler Button2.Click, AddressOf Button2_Click AddHandler PictureBox1.Paint, AddressOf PictureBox1_Paint End Sub Public Sub PictureBox1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) If picLoad = True Then AplicarSaturacion(True) End If End Sub Private Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs) Label1.Text = TrackBar1.Value.ToString() PictureBox1.Refresh() PictureBox1_Paint(1, Nothing) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Dim ofd As New OpenFileDialog() ofd.Title = "Guardar imagen" ofd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png" ofd.Filter += "|Bitmap Images(*.bmp)|*.bmp" If ofd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Dim streamReader As New StreamReader(ofd.FileName) originalBitmap = DirectCast(Bitmap.FromStream(streamReader.BaseStream), Bitmap) streamReader.Close() previewBitmap = Image.FromFile(ofd.FileName) PictureBox1.Image = previewBitmap picLoad = True AplicarSaturacion(True) End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) AplicarSaturacion(False) If resultBitmap IsNot Nothing Then Dim sfd As New SaveFileDialog() sfd.Title = "Abrir Imagen" sfd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png" sfd.Filter += "|Bitmap Images(*.bmp)|*.bmp" If sfd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Dim fileExtension As String = Path.GetExtension(sfd.FileName).ToUpper() Dim imgFormat As ImageFormat = ImageFormat.Png If fileExtension = "BMP" Then imgFormat = ImageFormat.Bmp ElseIf fileExtension = "JPG" Then imgFormat = ImageFormat.Jpeg End If Dim streamWriter As New StreamWriter(sfd.FileName, False) resultBitmap.Save(streamWriter.BaseStream, imgFormat) streamWriter.Flush() streamWriter.Close() resultBitmap = Nothing End If End If End Sub Public Sub AplicarSaturacion(ByVal preview As Boolean) Dim ca As COLORADJUSTMENT ca.caSize = CType(Marshal.SizeOf(ca), Short) Dim HDcPic As IntPtr = CType(PictureBox1.CreateGraphics.GetHdc, IntPtr) 'GetDC(PictureBox1.Handle) SetStretchBltMode(HDcPic, HALFTONE) GetColorAdjustment(HDcPic, ca) ca.caColorfulness = TrackBar1.Value SetColorAdjustment(HDcPic, ca) StretchBlt(HDcPic, 0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height, _ HDcPic, 0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height, TernaryRasterOperations.SRCCOPY) resultBitmap = PictureBox1.Image End Sub
NativeMethods > GetColorAdjustment y SetColorAdjustment para VB.NET<Security.SuppressUnmanagedCodeSecurity> Friend Class NativeMethods Inherits Attribute Private Sub New() End Sub <DllImport("gdi32.dll")> _ Public Shared Function BitBlt(hObject As IntPtr, nXDest As Integer, nYDest As Integer, nWidth As Integer, nHeight As Integer, hObjSource As IntPtr, nXSrc As Integer, nYSrc As Integer, dwRop As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function <DllImport("gdi32.dll")> Shared Function SetColorAdjustment(hdc As IntPtr, <MarshalAs(UnmanagedType.Struct)> ByRef lpca As COLORADJUSTMENT) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function <DllImport("gdi32.dll")> Shared Function GetColorAdjustment(ByVal hdc As IntPtr, <MarshalAs(UnmanagedType.Struct)> ByRef lpca As COLORADJUSTMENT) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function <DllImport("user32.dll")> Shared Function GetDC(ByVal hWnd As IntPtr) As IntPtr End Function <DllImport("gdi32.dll")> _ Public Shared Function StretchBlt(hdc As IntPtr, _ x As Integer, y As Integer, nHeight As Integer, hSrcDC As Integer, hObjSource As IntPtr, _ xSrc As Integer, ySrc As Integer, nSrcWidth As Integer, nSrcHeight As Integer, dwRop As TernaryRasterOperations) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function <DllImport("gdi32.dll")> _ Public Shared Function SetStretchBltMode(ByVal hObject As IntPtr, ByVal nStretchMode As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function <StructLayout(LayoutKind.Sequential)> Public Structure COLORADJUSTMENT Public caSize As Short Public caFlags As Short Public caIlluminantIndex As Short Public caRedGamma As Short Public caGreenGamma As Short Public caBlueGamma As Short Public caReferenceBlack As Short Public caReferenceWhite As Short Public caContrast As Short Public caBrightness As Short Public caColorfulness As Short Public caRedGreenTint As Short End Structure Public Enum caIlluminantIndex ILLUMINANT_DEVICE_DEFAULT = 0 'Device's default. Standard used by output devices. ILLUMINANT_A = 1 'Tungsten lamp. ILLUMINANT_B = 2 'Noon sunlight. ILLUMINANT_C = 3 'NTSC daylight. ILLUMINANT_D50 = 4 'Normal print. ILLUMINANT_D55 = 5 'Bond paper print. ILLUMINANT_D65 = 6 'Standard daylight. Standard for CRTs and pictures. ILLUMINANT_D75 = 7 'Northern daylight. ILLUMINANT_F2 = 8 'Cool white lamp. ILLUMINANT_DAYLIGHT = ILLUMINANT_C 'Same as ILLUMINANT_C. ILLUMINANT_FLUORESCENT = ILLUMINANT_F2 'Same as ILLUMINANT_F2. ILLUMINANT_MAX_INDEX = ILLUMINANT_F2 'Same as ILLUMINANT_F2. ILLUMINANT_NTSC = ILLUMINANT_C 'Same as ILLUMINANT_C. ILLUMINANT_TUNGSTEN = ILLUMINANT_A 'Same as ILLUMINANT_A. End Enum Public Enum TernaryRasterOperations SRCCOPY = &HCC0020 ' dest = source SRCPAINT = &HEE0086 ' dest = source OR dest SRCAND = &H8800C6 ' dest = source AND dest SRCINVERT = &H660046 ' dest = source XOR dest SRCERASE = &H440328 ' dest = source AND (NOT dest) NOTSRCCOPY = &H330008 ' dest = (NOT source) NOTSRCERASE = &H1100A6 ' dest = (NOT src) AND (NOT dest) MERGECOPY = &HC000CA ' dest = (source AND pattern) MERGEPAINT = &HBB0226 ' dest = (NOT source) OR dest PATCOPY = &HF00021 ' dest = pattern PATPAINT = &HFB0A09 ' dest = DPSnoo PATINVERT = &H5A0049 ' dest = pattern XOR dest DSTINVERT = &H550009 ' dest = (NOT dest) BLACKNESS = &H42 ' dest = BLACK WHITENESS = &HFF0062 ' dest = WHITE End Enum Public Const HALFTONE = 4 <DllImport("gdi32.dll")> _ Public Shared Function SetBkColor(hdc As IntPtr, crColor As Integer) As Integer End Function End Class
Se ve muy largo el código pero tenía que ponerlo para que puedan analizar. Espero que me puedan ayudar. No puedo darles nada solo mi agradecimiento. gracias
He conseguido redibujar correctamente el PictureBox en la versión para API metiendo la saturación en el evento PAINT, pero sigo sin poder guardar los cambios Añadí la configuración al código anterior.
|
|
|
|
|
|
|