Click here to Skip to main content
       

.NET Framework

 
AnswerRe: pop up after certain time limit PinmvpSandeep Mewara9-Jan-13 17:47 
JokeRe: pop up after certain time limit Pinmemberjibesh10-Jan-13 17:11 
QuestionDeleting data from Master and Detail tables using Entity Framework Pinmemberindian1439-Jan-13 8:48 
AnswerRe: Deleting data from Master and Detail tables using Entity Framework PinmvpDave Kreskowiak10-Jan-13 2:03 
AnswerRe: Deleting data from Master and Detail tables using Entity Framework Pinmemberjschell10-Jan-13 13:57 
Question[VB.NET 2008] How to put an image in a button Pinmembersteve_94966138-Jan-13 22:54 
AnswerRe: [VB.NET 2008] How to put an image in a button PinmvpEddy Vluggen9-Jan-13 1:22 
GeneralRe: [VB.NET 2008] How to put an image in a button Pinmembersteve_94966139-Jan-13 21:40 
Well... I can't say that I have understood everything in the MSDN example but I managed to convert it to Visual Studio .NET 2008 and to make it work!!!!
Yes, it would be easier something like Button.BkImage("image.bmp") but ... it seems that the Compact Framework is missing many things that I need!!!
 
Once again, Thank you Eddy!!
 
I publish the code of MyImageButton class if it can help someone or anyone has any corrections to suggest.
 
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Imaging
 
Public Class MyImageButton
  Inherits Control
 
  'Private members
  Private image As Image
  Private FirstTime As Boolean = True
  'flag to indicate the pressed state
  Private bPushed As Boolean
  Private m_bmpOffscreen As Bitmap
 
  Sub New()
    bPushed = False
    'default minimal size
    Me.Size = New Size(21, 21)
  End Sub
 
  Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    Dim gxOff As Graphics       'Offscreen graphics
    Dim imgRect As Rectangle    'image rectangle
    Dim backBrush As Brush      'brush for filling a backcolor

    'If (m_bmpOffscreen.Equals(Nothing)) Then   'Bitmap for doublebuffering
    If (FirstTime) Then
      m_bmpOffscreen = New Bitmap(ClientSize.Width, ClientSize.Height)
    End If
 
    gxOff = Graphics.FromImage(m_bmpOffscreen)
 
    gxOff.Clear(Me.BackColor)
 
    If (Not bPushed) Then
      backBrush = New SolidBrush(Parent.BackColor)
    Else 'change the background when it's pressed
      backBrush = New SolidBrush(Color.LightGray)
    End If
 
    gxOff.FillRectangle(backBrush, Me.ClientRectangle)
 
    If (Not image.Equals(DBNull.Value)) Then
      'Center the image relativelly to the control
      Dim imageLeft As Int32 = (Me.Width - image.Width) / 2
      Dim imageTop As Int32 = (Me.Height - image.Height) / 2
 
      If (Not bPushed) Then
        imgRect = New Rectangle(imageLeft, imageTop, image.Width, image.Height)
      Else  'The button was pressed
        'Shift the image by one pixel
        imgRect = New Rectangle(imageLeft + 1, imageTop + 1, image.Width, image.Height)
      End If
 
      'Set transparent key
      Dim imageAttr As ImageAttributes = New ImageAttributes()
      imageAttr.SetColorKey(BackgroundImageColor(image), BackgroundImageColor(image))
 
      'Draw image
      gxOff.DrawImage(image, imgRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttr)
    End If
 
    If (bPushed) Then   'The button was pressed
      'Prepare rectangle
      Dim rc As Rectangle = Me.ClientRectangle
      rc.Width -= 1
      rc.Height -= 1
      'Draw rectangle
      gxOff.DrawRectangle(New Pen(Color.Black), rc)
    End If
 
    '/Draw from the memory bitmap
    e.Graphics.DrawImage(m_bmpOffscreen, 0, 0)
 
    MyBase.OnPaint(e)
  End Sub
 
  Private Function BackgroundImageColor(ByVal image As Image) As Color
    Dim bmp As Bitmap = New Bitmap(image)
    Return bmp.GetPixel(0, 0)
  End Function
 
  Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaintBackground(e)
  End Sub
 
  Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
    bPushed = True
    Me.Invalidate()
    MyBase.OnMouseDown(e)
  End Sub
 
  Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
    bPushed = False
    Me.Invalidate()
    MyBase.OnMouseUp(e)
  End Sub
 
  Public Property MImage() As Image
    Get
      Return image
    End Get
    Set(ByVal value As Image)
      image = value
    End Set
  End Property
 
End Class

GeneralRe: [VB.NET 2008] How to put an image in a button PinmvpEddy Vluggen9-Jan-13 22:57 
GeneralRe: [VB.NET 2008] How to put an image in a button Pinmemberhalabella13-Jan-13 4:17 
GeneralRe: [VB.NET 2008] How to put an image in a button Pinmembersteve_949661313-Jan-13 22:46 
AnswerRe: [VB.NET 2008] How to put an image in a button Pinmembers32750499-Jan-13 7:41 
GeneralRe: [VB.NET 2008] How to put an image in a button Pinmembersteve_94966139-Jan-13 20:57 
Question[VB.NET 2008] How to get single bytes from a multibyte value Pinmembersteve_94966138-Jan-13 22:12 
AnswerRe: [VB.NET 2008] How to get single bytes from a multibyte value PinmvpEddy Vluggen9-Jan-13 1:29 
GeneralRe: [VB.NET 2008] How to get single bytes from a multibyte value Pinmembersteve_94966139-Jan-13 3:15 
GeneralRe: [VB.NET 2008] How to get single bytes from a multibyte value PinmvpEddy Vluggen9-Jan-13 4:31 
AnswerRe: [VB.NET 2008] How to get single bytes from a multibyte value PinmemberAlan N9-Jan-13 6:17 
GeneralRe: [VB.NET 2008] How to get single bytes from a multibyte value Pinmembersteve_94966139-Jan-13 20:35 
QuestionDistributing Changes to a DLL that Other Assemblies Depend Upon PinmemberRichard Andrew x648-Jan-13 2:24 
AnswerRe: Distributing Changes to a DLL that Other Assemblies Depend Upon PinprotectorPete O'Hanlon8-Jan-13 2:31 
QuestionMethod Level security based on User logged in Pinmemberpankajbaunthiyal7-Jan-13 22:31 
AnswerRe: Method Level security based on User logged in PinprotectorPete O'Hanlon7-Jan-13 23:44 
QuestionIOException was Unhandled Pinmemberjankevint7-Jan-13 15:39 
AnswerRe: IOException was Unhandled PinmvpRichard MacCutchan7-Jan-13 22:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web03 | 2.8.140902.1 | Last Updated 2 Sep 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid