Deine Arrays kanst du wenn sie im gleichen form sind global machen. Wenn sie in einer anderen Klasse sind, dann kannst du Eigenschaften setzten.
private double[] mDeinArray;
public double[] DerArray
{get{return mDeinArray;}}
Also ich würde dir vorschlagen erstmal ein änfger tutorial zu lesen. So wie sich das anhört, schaint es für mich als wenn du einfach drauf los geproggt hast ohn ein gewisses Grundwissen zu haben.
Auf myC#.de gibts nen Guide to C#, den würde ich vorschlagen zu lesen
[Tutorial] Guide to C#
änder deinen code einfach:
Kontakt1 kon = new Kontakt1();
on.MdiParent = this.MdiParent;
kon.Show(); // die zeile und...
kon.Location = new Point(1, 400); // die tauschen
fertig.
Wenn du infos zu MDI brauchst ist immer ein guter platz The Code Project.
The Code Project
*mit dem kopf auf tischplatte hau*
Meine fr**** echt exztrem simpel das zu korrigieren 😁
Das Graphics object hat eine variable namen PixelOffsetMode. Wenn man die auf HighQuality setzt ist alles gut 😁 die staht normalerweise auf Half.
Naja was solls 2 schlaflose Nächte für nix und wieder nix 8)
Naja, ich meine .NET kann nun wirklich jeder "schnell" lernen der es auch will!!! Es gibt echt tausende von seiten im netz mit einstiger Tuts, die MSDN ist eine umfassende Doku und was man nicht raus kriegt schaut man in foren oder user groups. Und Otto Normal PC Benutzer möchte nciht umbedingt Programme entwickeln.
PHP und Java haben halt so nen boom, weil einfach jeder sich eine Homepage basteln möchte. Ist die erste "amateur" HP fertig will man was anspruchvolleres und kauft sich dafür mal eher ein Buch oder eine Zeitschrift, in der das "was amch ich wie" beschrieben ist.
Und ich denke nciht das Otoo Normal User auf einmal auf die Idee kommt Software zu entwickeln, dann eher sich ne HP zu basteln 😉
Was isn daran so schlimm eben den regex umzuschreiben das ein + akzeptiert wird? Ist nicht wikrlich so die arbeit und das + ist ja nunmal zulässig also versteh ich die problematik nicht so 😁
Das manche sachen das nciht akzeptieren ist deren sache und nicht die sache von mycsharp.de.....denk ich mal....😉
Also ne gute ist auf jedenfall SDL hat meines wissens auch filter mit drinne. Gibt auch eine recht gebräuchliche Doku dazu
[FAQ] Kommunikation von 2 Forms
Für dein Scroll Problem schau dir mal die HScrollBar und VScrollBar mal genauer an
Original von nop
Verschieb das Bild einfach um einen halben skalierten Pixel (vermutlich am einfachsten mit Transform).
Geht net, hatte ich schon ausprobiert. Ich machs jetzt mit ner eigenen funktion die direkt in den speichern schreibt. Geht genauso fix und es funktioniert ohne probleme
Original von Kabelsalat
Ich denke die Koordinaten werden in Bezug zur Mitte eines "Pixels" gesetzt. Sollte dem so sein, stimmt die Darstellung schon...
Hmm kapier ich net so, wenn ich ein bild habe was 16 px x 16 px gross ist, wie kann dann .NET beim vergrössern von ausgehen das mein erster pixel nur 0,5 px breit ist und nicht 1px ???
Oder hänge ich gerade inner denk schleife? Habs jetzt auch erstmal ruhen gelassen, weil ich gestern echt kirre geworden bin 😁
Nach etwas rum fummeln ist mir aufgefallen das er das gleich mit dem oberen und unteren rand auch macht.....das doch alles gnarf.....
Ok, da hier ja auch keiner ne lösung parat hat, zeichne ich die pixel einzelnt. Ist zwar ne ellen lange procedure aber was solls 😉
Denn selbst, wenn ich normale scale proceduren benutze, also seitenverhältnis ausrechnen und dann mit den richtigen maßen zeichnen, macht er den fehler, warum auch immer.
So wie das aussieht ist genau das was am linken rand fehlt, zuviel am rechten rand.
Wäre nett wenn das mal jemand testen könnte. Wenns nämlich bei mir so ist, stimmt was net mit meinem framework 🙁 was ich net hoffe.
Ich hänge das Projekt mal mit ran zum testen.
Thx
Also hier ist ne Klasse mti der du RGB in HSL und wieder zurück wandeln kannst. Um über jeden pixel zu gehen schalg ich dir vor das mit BitmapData zu machen.
/******************************************************************/
/***** *****/
/***** Project: Adobe Color Picker Clone 1 *****/
/***** Filename: AdobeColors.cs *****/
/***** Original Author: Danny Blanchard *****/
/***** - [EMAIL]scrabcakes@gmail.com[/EMAIL] *****/
/***** Updates: *****/
/***** 3/28/2005 - Initial Version : Danny Blanchard *****/
/***** *****/
/******************************************************************/
using System;
using System.Drawing;
namespace adobe_color_picker_clone_part_1
{
/// <summary>
/// Summary description for AdobeColors.
/// </summary>
public class AdobeColors
{
#region Constructors / Destructors
public AdobeColors()
{
}
#endregion
#region Public Methods
/// <summary>
/// Sets the absolute brightness of a colour
/// </summary>
/// <param name="c">Original colour</param>
/// <param name="brightness">The luminance level to impose</param>
/// <returns>an adjusted colour</returns>
public static Color SetBrightness(Color c, double brightness)
{
HSL hsl = RGB_to_HSL(c);
hsl.L=brightness;
return HSL_to_RGB(hsl);
}
/// <summary>
/// Modifies an existing brightness level
/// </summary>
/// <remarks>
/// To reduce brightness use a number smaller than 1. To increase brightness use a number larger tnan 1
/// </remarks>
/// <param name="c">The original colour</param>
/// <param name="brightness">The luminance delta</param>
/// <returns>An adjusted colour</returns>
public static Color ModifyBrightness(Color c, double brightness)
{
HSL hsl = RGB_to_HSL(c);
hsl.L*=brightness;
return HSL_to_RGB(hsl);
}
/// <summary>
/// Sets the absolute saturation level
/// </summary>
/// <remarks>Accepted values 0-1</remarks>
/// <param name="c">An original colour</param>
/// <param name="Saturation">The saturation value to impose</param>
/// <returns>An adjusted colour</returns>
public static Color SetSaturation(Color c, double Saturation)
{
HSL hsl = RGB_to_HSL(c);
hsl.S=Saturation;
return HSL_to_RGB(hsl);
}
/// <summary>
/// Modifies an existing Saturation level
/// </summary>
/// <remarks>
/// To reduce Saturation use a number smaller than 1. To increase Saturation use a number larger tnan 1
/// </remarks>
/// <param name="c">The original colour</param>
/// <param name="Saturation">The saturation delta</param>
/// <returns>An adjusted colour</returns>
public static Color ModifySaturation(Color c, double Saturation)
{
HSL hsl = RGB_to_HSL(c);
hsl.S*=Saturation;
return HSL_to_RGB(hsl);
}
/// <summary>
/// Sets the absolute Hue level
/// </summary>
/// <remarks>Accepted values 0-1</remarks>
/// <param name="c">An original colour</param>
/// <param name="Hue">The Hue value to impose</param>
/// <returns>An adjusted colour</returns>
public static Color SetHue(Color c, double Hue)
{
HSL hsl = RGB_to_HSL(c);
hsl.H=Hue;
return HSL_to_RGB(hsl);
}
/// <summary>
/// Modifies an existing Hue level
/// </summary>
/// <remarks>
/// To reduce Hue use a number smaller than 1. To increase Hue use a number larger tnan 1
/// </remarks>
/// <param name="c">The original colour</param>
/// <param name="Hue">The Hue delta</param>
/// <returns>An adjusted colour</returns>
public static Color ModifyHue(Color c, double Hue)
{
HSL hsl = RGB_to_HSL(c);
hsl.H*=Hue;
return HSL_to_RGB(hsl);
}
/// <summary>
/// Converts a colour from HSL to RGB
/// </summary>
/// <remarks>Adapted from the algoritm in Foley and Van-Dam</remarks>
/// <param name="hsl">The HSL value</param>
/// <returns>A Color structure containing the equivalent RGB values</returns>
public static Color HSL_to_RGB(HSL hsl)
{
int Max, Mid, Min;
double q;
Max = Round(hsl.L * 255);
Min = Round((1.0 - hsl.S)*(hsl.L/1.0)*255);
q = (double)(Max - Min)/255;
if ( hsl.H >= 0 && hsl.H <= (double)1/6 )
{
Mid = Round(((hsl.H - 0) * q) * 1530 + Min);
return Color.FromArgb(Max,Mid,Min);
}
else if ( hsl.H <= (double)1/3 )
{
Mid = Round(-((hsl.H - (double)1/6) * q) * 1530 + Max);
return Color.FromArgb(Mid,Max,Min);
}
else if ( hsl.H <= 0.5 )
{
Mid = Round(((hsl.H - (double)1/3) * q) * 1530 + Min);
return Color.FromArgb(Min,Max,Mid);
}
else if ( hsl.H <= (double)2/3 )
{
Mid = Round(-((hsl.H - 0.5) * q) * 1530 + Max);
return Color.FromArgb(Min,Mid,Max);
}
else if ( hsl.H <= (double)5/6 )
{
Mid = Round(((hsl.H - (double)2/3) * q) * 1530 + Min);
return Color.FromArgb(Mid,Min,Max);
}
else if ( hsl.H <= 1.0 )
{
Mid = Round(-((hsl.H - (double)5/6) * q) * 1530 + Max);
return Color.FromArgb(Max,Min,Mid);
}
else return Color.FromArgb(0,0,0);
}
/// <summary>
/// Converts RGB to HSL
/// </summary>
/// <remarks>Takes advantage of whats already built in to .NET by using the Color.GetHue, Color.GetSaturation and Color.GetBrightness methods</remarks>
/// <param name="c">A Color to convert</param>
/// <returns>An HSL value</returns>
public static HSL RGB_to_HSL (Color c)
{
HSL hsl = new HSL();
int Max, Min, Diff, Sum;
// Of our RGB values, assign the highest value to Max, and the Smallest to Min
if ( c.R > c.G ) { Max = c.R; Min = c.G; }
else { Max = c.G; Min = c.R; }
if ( c.B > Max ) Max = c.B;
else if ( c.B < Min ) Min = c.B;
Diff = Max - Min;
Sum = Max + Min;
// Luminance - a.k.a. Brightness - Adobe photoshop uses the logic that the
// site VBspeed regards (regarded) as too primitive = superior decides the
// level of brightness.
hsl.L = (double)Max/255;
// Saturation
if ( Max == 0 ) hsl.S = 0; // Protecting from the impossible operation of division by zero.
else hsl.S = (double)Diff/Max; // The logic of Adobe Photoshops is this simple.
// Hue R is situated at the angel of 360 eller noll degrees;
// G vid 120 degrees
// B vid 240 degrees
double q;
if ( Diff == 0 ) q = 0; // Protecting from the impossible operation of division by zero.
else q = (double)60/Diff;
if ( Max == c.R )
{
if ( c.G < c.B ) hsl.H = (double)(360 + q * (c.G - c.B))/360;
else hsl.H = (double)(q * (c.G - c.B))/360;
}
else if ( Max == c.G ) hsl.H = (double)(120 + q * (c.B - c.R))/360;
else if ( Max == c.B ) hsl.H = (double)(240 + q * (c.R - c.G))/360;
else hsl.H = 0.0;
return hsl;
}
/// <summary>
/// Converts RGB to CMYK
/// </summary>
/// <param name="c">A color to convert.</param>
/// <returns>A CMYK object</returns>
public static CMYK RGB_to_CMYK(Color c)
{
CMYK _cmyk = new CMYK();
double low = 1.0;
_cmyk.C = (double)(255 - c.R)/255;
if ( low > _cmyk.C )
low = _cmyk.C;
_cmyk.M = (double)(255 - c.G)/255;
if ( low > _cmyk.M )
low = _cmyk.M;
_cmyk.Y = (double)(255 - c.B)/255;
if ( low > _cmyk.Y )
low = _cmyk.Y;
if ( low > 0.0 )
{
_cmyk.K = low;
}
return _cmyk;
}
/// <summary>
/// Converts CMYK to RGB
/// </summary>
/// <param name="_cmyk">A color to convert</param>
/// <returns>A Color object</returns>
public static Color CMYK_to_RGB(CMYK _cmyk)
{
int red, green, blue;
red = Round(255 - (255 * _cmyk.C));
green = Round(255 - (255 * _cmyk.M));
blue = Round(255 - (255 * _cmyk.Y));
return Color.FromArgb(red, green, blue);
}
/// <summary>
/// Custom rounding function.
/// </summary>
/// <param name="val">Value to round</param>
/// <returns>Rounded value</returns>
private static int Round(double val)
{
int ret_val = (int)val;
int temp = (int)(val * 100);
if ( (temp % 100) >= 50 )
ret_val += 1;
return ret_val;
}
#endregion
#region Public Classes
public class HSL
{
#region Class Variables
public HSL()
{
_h=0;
_s=0;
_l=0;
}
double _h;
double _s;
double _l;
#endregion
#region Public Methods
public double H
{
get{return _h;}
set
{
_h=value;
_h=_h>1 ? 1 : _h<0 ? 0 : _h;
}
}
public double S
{
get{return _s;}
set
{
_s=value;
_s=_s>1 ? 1 : _s<0 ? 0 : _s;
}
}
public double L
{
get{return _l;}
set
{
_l=value;
_l=_l>1 ? 1 : _l<0 ? 0 : _l;
}
}
#endregion
}
public class CMYK
{
#region Class Variables
public CMYK()
{
_c=0;
_m=0;
_y=0;
_k=0;
}
double _c;
double _m;
double _y;
double _k;
#endregion
#region Public Methods
public double C
{
get{return _c;}
set
{
_c=value;
_c=_c>1 ? 1 : _c<0 ? 0 : _c;
}
}
public double M
{
get{return _m;}
set
{
_m=value;
_m=_m>1 ? 1 : _m<0 ? 0 : _m;
}
}
public double Y
{
get{return _y;}
set
{
_y=value;
_y=_y>1 ? 1 : _y<0 ? 0 : _y;
}
}
public double K
{
get{return _k;}
set
{
_k=value;
_k=_k>1 ? 1 : _k<0 ? 0 : _k;
}
}
#endregion
}
#endregion
}
}
gefunden auf The-Code-Project hab leider den url zur seite nciht mehr 🙁
[EDIT]Ha, hab den link gefunden : http://www.codeproject.com/csharp/adobe_cp_clone_part_1.asp[/EDIT]
Moinsen!
Hab da ein kleines Probelm und komm net wirklich zu ner lösung!
Unzwar, Scale ich ein Bitmap auf einem Control mit:
private void UserControl_Paint( object sender, PaintEventArgs e )
{
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
e.Graphics.DrawImage( mImage,0, 0, Width, Height );
}
Macht er auch alles wunderbar, wenn da nciht der kleine fehler wäre, das die Pixel bei x = 0 immer zu schmal gezeichnet werden im gegsatz zu dem wo x > 0 ist.
Selbst wenn ich die x und y variablen beim zeichnen höher als 0 setzte, dann macht er es immer noch. Hab ja erst gedacht das er halt statt bei 0 bei <0 anfängt zu zeichnet und somit die hälfte nciht gezeigt wird. Aber ist nciht.
Ich häng mal ein Bild mit dran, damit ist es wohl verständlicher. Vielelciht hat ja jemand ne lösung oder ne idee wie ichs richtig hin kriege.
THX schonmal im vorraus 😁
Ähm nur mal im raum geschmissen :
Du hast 3 fahrer also muss jede woche ein anderer fahren. Und nach 3 Wochen beginnt das schauspiel von vorne:
Woche 1 fährt Fahrer 1
Woche 2 fährt Fahrer 2
Woche 3 fährt Fahrer 3
Woche 4 fährt Fahrer 1
Woche 5 fährt Fahrer 2
Woche 6 fährt Fahrer 3
Und nu wieder von vorne das ganze....da bruahct man doch ncht wirklcih nen algo für oder war das jetzt falsch überlegt??? 🤔
Wens intressiert :
mms://wm.microsoft.com/ms/msnse/0510/25766/cider_2005_MBR.wmv
Mark Boulter, PM and technical lead, and Brian Pepin, development lead, talk to us about Cider, a future version of the visual designer that'll ship in Orcas, future version of Visual Studio.
wie ist denn dein derzeitger schaltplan für dein usb ding??? und was willset damit machen? nur die relais schalten???
Ups, ok, wäre ne möglichkeit 😁 hab ich wohl überlsesen. Danke für den Tip 😁
Ok, hier ist mal meine Lösung für ein Rechteck:
private void drawStippelRectangle( Bitmap bmp, Rectangle rect, Color[] matrix )
{
int matrixPos = 0;
int x = 0, y = 0;
// obere Linie
for ( x = 0; x < rect.Width; x++ )
{
bmp.SetPixel( x + rect.X, rect.Y, matrix[ matrixPos ] );
matrixPos++; matrixPos = matrixPos >= matrix.Length ? 0 : matrixPos;
}
// rechte Linie
for ( y = 0; y < rect.Height; y++ )
{
bmp.SetPixel( rect.X + rect.Width, y + rect.Y, matrix[ matrixPos ] );
matrixPos++; matrixPos = matrixPos >= matrix.Length ? 0 : matrixPos;
}
// untere Linie
for ( x = 0; x < rect.Width; x++ )
{
bmp.SetPixel( x + rect.X, rect.Y + rect.Height, matrix[ matrixPos ] );
matrixPos++; matrixPos = matrixPos >= matrix.Length ? 0 : matrixPos;
}
// linke Linie
for ( y = 0; y < rect.Height; y++ )
{
bmp.SetPixel( rect.X, y + rect.Y, matrix[ matrixPos ] );
matrixPos++; matrixPos = matrixPos >= matrix.Length ? 0 : matrixPos;
}
}
aufrufen tut man das ganze so:
drawStippelRectangle( ABitmap, new Rectangle( 10, 10, 50, 50 ), new Color[] { Color.Black, Color.Black, Color.White, Color.White } );
Animation kriegt man in die sache indem man die Color Matrix immer um ein oder zwei werte verschiebt also:
// erster lauf
new Color[] { Color.Black, Color.Black, Color.White, Color.White }
// zweiter lauf
new Color[] { Color.White, Color.Black, Color.Black, Color.White }
// dritter lauf
new Color[] { Color.White, Color.White, Color.Black, Color.Black }
// vierter lauf und dann wieder von vorne
new Color[] { Color.Black, Color.White, Color.White, Color.Black }
Das funzt für ein rechteck, mit der Elipse muss ich nochmal schauen und dann erst ein freier auswahl rahmen 😁
Aber nix ist unmöglich 8)
Moinsen!
Naja weiss net ob der so heisst der Effekt aber nu mal zum sachlichen:
Ich möchte gerne per Graphics ein auswahl rahmen zeichnen. Wie ich koordinaten usw hin kriege ist kein problem, kann schon einen schönen roten zeichnen, aaaaber nur der kern der sache 🙂
Ich hätte gerne so einen suwahl rahmen wie z.B. bei Photoshop, der sich bewegt und immer 2 schwarze pixel und dann wieder 2 weisse pixel zeigt.
In Graphics32 für Delphi hies das ding meine ich Stippel Effekt, deswegen der name 😉
Jemand ne ahnung wie ich das hin kriege? Hab mich shcon dumm und dämlich im Netz gesucht aber nix passendes gefunden. Vielleicht einer ne idee wie sowas heisst oder ne seite wo es beschrieben ist?
Ich glaub bei einem Rechteck ist das nicht so das probelm das hin zu kriegen, einfach die pixel einzelnt setzten, aber bei einer Elipse ist das schon wieder heikler.
Ausserdem würde das mit SetPixel zuviel rechenzeit beanspruchen bei grossen bildern.
Ich häng mal ein bild mit ran, damit man weiss was gemeint ist.
Danke schonmal im vorraus 😉
PS mit nem TextureBrush gehts net
PPS Das ganz sollte möglichst ohne DirectX funzen 😁
Also wenn ich den hilfe text bei der Accept button eigenschaft richtig verstehe wird ein klicken auf den accept button simuliert. Also müsstest du nur praktisch abfangen das er das form nciht schliesst, wenn die richtextbox aktiv ist.
Umständlich kannst du auch einfach die Accept button Eigenschaft auf (Keinen) setzten und dann bei jedem anderen control einfach die key down event abfangen, schaun ob Enter gedrückt wurde und wenn ja mit this.DialogResult = DialogResults.OK das form beenden. Wie gesagt ist die umständliche lösung 😉
Also mit DirectX ist das realisierbar. Es gibt auch einige Komponenten die sowas können, allerdings musste dafür viel Geld hinlegen oder die freeware sachen funktionierten nicht bei mir 🙁
Such bei google mal nach "volume meter", da findest was zu dem Thema
Also inpout32.dll ist nur Port zugriff, wie schon geschreiben z.B. ParallelPort
Mehr infos hier
Bei Codeproject gibts nen netten Artikel über den Performance Counter, den du ja schon selbst benutzt :
Das ja echt mal gut zu wissen, hatte es auch mal und hab mich echt dumm und dusselig gesucht und keine Lösung gefunden. Hat nur installation reparieren geholfen.
Na das wäre doch mal ein community projekt 😁 Wir schrieben Windows in QBasic....hach das waren noch zeiten.....ich will mein dos zurück heul
Original von sh4rk
was muss ich dann da herunterladen...da steht immer red hat und suse...
korrigiert mich wenn ich falschh bi ich verwende ubuntu...
fals ich falsch liege dann entschuldigt mich ich befasse mich erst seit kurzem mit diesem Thema...
mfg hannes
Musst dir den Source runter laden und den kompilieren....wie das geht findest du bei der deutschen ubuntu community unter faqs
Hier klicken
Echt ist ja genial, wusste garnicht das es c# auch unter linux gibt. Wie gesagt war mein letzter stand 😉 Linux wird bei mir zum arbeiten benutzt und nicht zum proggen. Ist halt so das man mit Windows Programmen einen grösseren MArkt erreicht....noch
Witziges Argument, heisst das du bist der Ansicht Windows wäre in C# programmiert? Oder all die Anwendungen die unter Windows laufen? großes Grinsen
😁
Ne c++ bring ich immer mit linux in verbindung 😉 und glaubst du das dos/windoof in c++ geschrieben wurde??? 😉
Soviel ich weiss bzw mein letzter stand ist, kannst du c# unter lx vergessen. Da es vom .NET Framework ausgeht und das nunmal nciht für lx verfügbar ist.
Wie gesagt ist mein letuzter stand, kann sich auch shcon wieder was geändert ahben, was ich aber bezweifle.
c++ ist immer noch die haupt programmiersprache von linux, da wird sich glaube ich auch so schnell nix dran ändern 😁
TND = The new dimension 😁
Ari = Ist aus einem Buch was ich früher gelesen habe, da hies einer Ariakas. Ari ist halt die kurzform.
TND + Ari = TNDAri 8o
Moinsen!
Ja ich weiss chon wieder eine sinnlose ListBox 🙂
Also was kann as ding:
Das ding ist wohl noch extrem ausbau fähig. Benutze das ding derzeit als Log Box für meine Programme und da reicht es vollkommen.
Also wer dran weiter fummeln will, tut euch kein zwang an 😉
Und wie funktionert jetzt das ding?
Gaaanz simpel. Das Usercontrol auf dein Form setzten und das schwerste ist geschafft 😉 Wenn man will noch die Variable Images im Eigenschaten Fenster auf die entsprechende ImageList setzten.
// Item hinzufügen
ListBoxExItem item = listBoxEx1.Items.Add( "Das ist ein Test" );
// Hintergrund ändern
item.BackgroundColor
// Image setzten
item.ImageIndex
// Font setzten
item.Font
So das waren vorerst die Costum sachen eines Items.
Also viel spass, bei fehlern [EDIT] oder ideen [/EDIT] postet sie ruhig hier 😉
Die MSDN hilft mal wieder 😉
Das leute auf sowas nie selber kommen, fasziniert mich immer wieder 😁 nich böse gemeint
Ich würde die Punkte in einer Datenbank speichern. Hat den vorteil, das du wenn es viele sind du schneller drauf zugreifen bzw verabeiten kannst.
Einfach die Koordinaten zwischenspeichern in einer point variable 😉
Point mMousePos = new Point( 0, 0 );
private void pic_MouseClick( object sender, MouseEventArgs e)
{
mMousePos.X = e.X; mMousePos.Y = e.Y;
}
private void deinPositionDing_Click( object sender, EventArgs e )
{
MessageBox.Show( String.Format( "X: {0} Y: {1}", mMousePos.X, mMousePos.Y ) );
}
Keine ahnung ob der syntax so stimmt, hab gerade nix zum prüfen anbei 😉
[EDIT]Ups wieder nur die hälfte gelesen, das ganze ohne zwischenspeichern also.
Dein ContextMenuStrip hat eine Left und eine Top Variable, probiers mal damit 😉 Damit hat sein mein obiger vorschlag auch gerade verabschiedet, wenns stimmt 😉[/EDIT]
Na am einfachsten ist es wohl vorhandende PHP libs zu benutzen. wie diese im einzelnen funktionieren, solltest du auf der PHP homepage raus finden können.
Lies dir mal die Doc von PHP durch, am einfachsten wäre es wohl die Kommandozeile von PHP zu benutzen um zu testen. Aber für eine richtige intigartion würde ich die dll's benutzen. Wie gesagt lies die die Doc durch, da wirds irgendwo stehen, ansonsten mailing list von php 😉
Moinsen!
So nu hier mein derzeitiges Projekt. Ich bastel zur zeit an einem kleinen Programm (Client und Server) der es mir erlaubt meinen Scanner übers Netzwerk zu benutzen.
Warum das ganze?
Weil es mich annervt, das wenn ich was scannen will jedesmal mein Kombi Gerät an den passenden PC zu stöpseln. Ist doch viel einfacher das Gerät an meinem Server zu stecken und von jedem PC im LAN zu scannen kann, oder?
Ich weiss es gibt lösungen dafür aber die kosten geld und warum geld ausgeben wenn man es selber proggen kann 😉
Der Server ist ein simpler TCP Server, der nur die befehle entgegenimmt vom Client und sie entsprechend ausführt.
Eine kleine Client sperre ist auch mit drinne so das ich nicht jedem erlaube zu scannen.
Ich benutze meine eigene TWAIN lib, da openTwain zu bombastisch, nicht alles intigriert ist was ich brauche und unübersichtlich geproggt ist (meine Meinung 😉)
Der Client ist ebenso simpel aufgebaut. Ich häng mal ein screeni mit ran, der erklärt sich von selbst 😉
Momentan läuft der Server und der client zu test zwecken bei mir im LAN schon mehrere Tage ohne grossartige Probleme (Momenten hängen 5 Leute dran). Das einzige was mir noch Kopfzerbrechen bereitet ist den frame beim scannen zu setzten (die region die gescannt werden soll).
Wenn alles funktinoert werde ich aml anfagen ein Twain DataSource zu basteln. Das ist dafür, das ich direkt aus anderen Programmen mit den client scannen kann.
Also wenn man eine Access DB proggen will, sollte man doch schon ein grundverständnis in SQL Befehlssätzen und den .NET DB Komps haben.
Wenn du dich ein bisschen ansträngst findeste tausende von seiten im Inet mit den entsprechenden themen. Es gibt echt hunderte von Einsteiger Tuts in sachen DB programmierung.
Hab mal eine MP3 Datenabnk in Delphi (Ja ich weiss 😉 ) geschrieben und das gleiche prinzip benutzt. Es bringt echt extrem viel speed ab einer grossen anzahl von datensätzen.
Also 👍 👍 😁
Klar ist das realisierbar.
Schau mal bei dem DrawItem Eregniss bim TreeView. Damit solltest du schonmal den start hin kriegen (bei angewählten item die entsprechende komponente erstellen und über die node legen). Alles weitere findeste dann selber raus 😉