[Gambas-user] Help with DrawingArea and class design

Ulrich Hartmann uli at ...3067...
Sun Jan 20 14:03:00 CET 2013


Hi Caveat,

thanks for the code, this makes it easier for me to understand how I 
could solve this in a good way!

Uli

Am 17.01.2013 11:25, schrieb Caveat:
> As a kind of getting started hint (not sure how far you got already), 
> I have some code I wrote a while back to draw hex values as binary 
> using little red boxes to represent the 1 bits...in the good old days, 
> you'd often get custom sprites or characters defined with a bunch of 
> DATA statements and binary values...
>
> Public Sub Form_Open()
>   Dim draw As New DrawingArea(Me)
>   Dim values As String[]
>   Dim hexValues As String = "01 0F 1C FF 00 01 02 03 04 05 06 07 08 09 
> 10 11"
>   values = Split(hexValues, " ")
>   addBoxes(draw, 20, values)
> End
>
> Public Sub addBoxes(draw As DrawingArea, size As Integer, values As 
> String[])
>
>   Dim idx, idy As Integer
>   Dim drawc As DrawingArea
>   Dim aBinValue As String
>   For idy = 1 To values.Count
>     aBinValue = hexToBinary(values[idy - 1])
>     For idx = 1 To Len(aBinValue)
>       drawc = New DrawingArea(draw)
>       drawc.H = size
>       drawc.W = size
>       drawc.X = idx * size
>       drawc.Y = idy * size
>       If Mid(aBinValue, idx, 1) = "1" Then
>         drawc.Background = Color.Red
>       Else
>         drawc.Background = Color.White
>       End If
>     Next
>   Next
>
> End
>
> Private Function hexToBinary(hexValue As String) As String
>
>   Dim idx As Integer
>   Dim result As String = ""
>   For idx = 1 To Len(hexValue)
>     result &= hexDigitToBinary(Mid(hexValue, idx, 1))
>   Next
>   Return result
>
> End
>
>
> Private Function hexDigitToBinary(hexDigit As String) As String
>
>   Dim idx, idy As Integer
>   Dim conversions As String[][] = [
>       ["0", "0000"], ["1", "0001"], ["2", "0010"], ["3", "0011"],
>       ["4", "0100"], ["5", "0101"], ["6", "0110"], ["7", "0111"],
>       ["8", "1000"], ["9", "1001"], ["A", "1010"], ["B", "1011"],
>       ["C", "1010"], ["D", "1011"], ["E", "1110"], ["F", "1111"]]
>   For idx = 0 To conversions.Count - 1
>     If conversions[idx][0] = hexDigit Then
>       Return conversions[idx][1]
>     Endif
>   Next
>   Return "*"
> End
>
> Hope this helps,
> Caveat
>
> On 17/01/13 10:18, Ulrich Hartmann wrote:
>> Hi all,
>>
>> I'm trying to create a class which can draw a pixel-font character on 
>> screen and would let me edit the pixels (this is for my graphic lcd 
>> connected to an arduino project). So I started playing around with 
>> the Paint class in Gambas3.
>>
>> So here are my questions:
>>
>> If I wanted to create my own class in which I would need to draw 
>> stuff like boxes which represent the characters pixels and make them 
>> clickable to activate or deactivate pixels (eg. draw characters), 
>> which class would I use to inherit from (DrawAerea?)?
>>
>> Also how would I be able to draw form within my new class when it 
>> seems to be only possible to draw in the _Draw event of the 
>> DrawingArea (can I hijack the _Draw event insde the new class 
>> inherited from DrawigArea to do the drawing)?
>>
>> I guess what I want is more like my own component to display and edit 
>> a pixel character.
>>
>> Tips and help would be highly appreciated!
>>
>> Uli
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------ 
>>
>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
>> MVPs and experts. ON SALE this month only -- learn more at:
>> http://p.sf.net/sfu/learnmore_122712
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
>





More information about the User mailing list