Click here to Skip to main content
14,327,433 members

.NET Framework

 
AnswerRe: pop up after certain time limit Pin
Sandeep Mewara9-Jan-13 17:47
mentorSandeep Mewara9-Jan-13 17:47 
JokeRe: pop up after certain time limit Pin
Jibesh10-Jan-13 17:11
professionalJibesh10-Jan-13 17:11 
QuestionDeleting data from Master and Detail tables using Entity Framework Pin
indian1439-Jan-13 8:48
memberindian1439-Jan-13 8:48 
AnswerRe: Deleting data from Master and Detail tables using Entity Framework Pin
Dave Kreskowiak10-Jan-13 2:03
mveDave Kreskowiak10-Jan-13 2:03 
AnswerRe: Deleting data from Master and Detail tables using Entity Framework Pin
jschell10-Jan-13 13:57
memberjschell10-Jan-13 13:57 
Question[VB.NET 2008] How to put an image in a button Pin
steve_94966138-Jan-13 22:54
professionalsteve_94966138-Jan-13 22:54 
AnswerRe: [VB.NET 2008] How to put an image in a button Pin
Eddy Vluggen9-Jan-13 1:22
mveEddy Vluggen9-Jan-13 1:22 
GeneralRe: [VB.NET 2008] How to put an image in a button Pin
steve_94966139-Jan-13 21:40
professionalsteve_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 Pin
Eddy Vluggen9-Jan-13 22:57
mveEddy Vluggen9-Jan-13 22:57 
GeneralRe: [VB.NET 2008] How to put an image in a button Pin
halabella13-Jan-13 4:17
memberhalabella13-Jan-13 4:17 
GeneralRe: [VB.NET 2008] How to put an image in a button Pin
steve_949661313-Jan-13 22:46
professionalsteve_949661313-Jan-13 22:46 
AnswerRe: [VB.NET 2008] How to put an image in a button Pin
s32750499-Jan-13 7:41
members32750499-Jan-13 7:41 
GeneralRe: [VB.NET 2008] How to put an image in a button Pin
steve_94966139-Jan-13 20:57
professionalsteve_94966139-Jan-13 20:57 
Question[VB.NET 2008] How to get single bytes from a multibyte value Pin
steve_94966138-Jan-13 22:12
professionalsteve_94966138-Jan-13 22:12 
AnswerRe: [VB.NET 2008] How to get single bytes from a multibyte value Pin
Eddy Vluggen9-Jan-13 1:29
mveEddy Vluggen9-Jan-13 1:29 
GeneralRe: [VB.NET 2008] How to get single bytes from a multibyte value Pin
steve_94966139-Jan-13 3:15
professionalsteve_94966139-Jan-13 3:15 
GeneralRe: [VB.NET 2008] How to get single bytes from a multibyte value Pin
Eddy Vluggen9-Jan-13 4:31
mveEddy Vluggen9-Jan-13 4:31 
AnswerRe: [VB.NET 2008] How to get single bytes from a multibyte value Pin
Alan N9-Jan-13 6:17
memberAlan N9-Jan-13 6:17 
GeneralRe: [VB.NET 2008] How to get single bytes from a multibyte value Pin
steve_94966139-Jan-13 20:35
professionalsteve_94966139-Jan-13 20:35 
QuestionDistributing Changes to a DLL that Other Assemblies Depend Upon Pin
Richard Andrew x648-Jan-13 2:24
professionalRichard Andrew x648-Jan-13 2:24 
AnswerRe: Distributing Changes to a DLL that Other Assemblies Depend Upon Pin
Pete O'Hanlon8-Jan-13 2:31
protectorPete O'Hanlon8-Jan-13 2:31 
QuestionMethod Level security based on User logged in Pin
pankajbaunthiyal7-Jan-13 22:31
memberpankajbaunthiyal7-Jan-13 22:31 
AnswerRe: Method Level security based on User logged in Pin
Pete O'Hanlon7-Jan-13 23:44
protectorPete O'Hanlon7-Jan-13 23:44 
QuestionIOException was Unhandled Pin
jankevint7-Jan-13 15:39
memberjankevint7-Jan-13 15:39 
AnswerRe: IOException was Unhandled Pin
Richard MacCutchan7-Jan-13 22:24
protectorRichard MacCutchan7-Jan-13 22:24 

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

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