|
Hi there,
My problem is that when my app executes the following code :
private void AddImageToList(string file)<br />
{<br />
this.image = Image.FromFile(file); <br />
this.thumbnailImage = this.image.GetThumbnailImage(100, 100, new Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);<br />
thumbnailImage.Tag = file;<br />
this.imageList.Add(this.thumbnailImage); <br />
}
..my program freezes and it takes 10-15 secs to continue, also when I use these thumbnails again performance reduces dramatically..
Is there anything I can do to increase my performance?
P.S: generally images I wish to load into thumbnails are ~500kb to 1.5Mb
.:: Something is Wrong ::.
|
|
|
|
|
Why do you need to store a thumbnail ? Why not just draw the image smaller to show a thumbnail ?
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Because I thought - while I am going to use these thumbnails repeatedly - instead of loading the image file and draw it smaller to a picturebox, storing the undersized images (thumbnails) in a List will more proper..
Isn't it ?
.:: Something is Wrong ::.
|
|
|
|
|
It is better that u use Graphics object to resize / to generate thumbnail
by using following properties
CompositingQuality = high
SmoothingMode = high
InterpolationMode = high
and then add Image/Bitmap to ur ImageList this will higher quality and faster
Cris ( Chintan Patel )
|
|
|
|
|
I am sure this will help but :
Graphics tempGraph = Graphics.FromImage(Image.FromFile(file));<br />
tempGraph.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;<br />
tempGraph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
.. and the I try to create an Image but there is only a DrawImage() method in which all its overloads needs a location data (I mean the [x,y], Point or Rectangle) to draw..
Let me tell what I try to do exactly :
get image files within a directory
make these images thumbnails and put them in a List
when the user browse from the treeView in my application to a directory all thumbnails in the List will loaded to pictureboxes (they are created dynamically)..
It works cool but as I said the performance decreases dramatically when image files' size are big..
-- modified at 10:09 Thursday 17th August, 2006
.:: Something is Wrong ::.
|
|
|
|
|
hi
1- i want to deploy a project and i want to embed .net framework 2.0 in my setup.exe. how is it in vs 2005. i looked up msdn and found Bootstrapper but it is just for 2003. is it integrated in vs 2005?
2- when i set "FormBorderStyle" of a form to "FixedDialog", "FixedSingle" or "Fixed3D" the user is not able to resize it. but when user double click on the caption of the window it just go full screen! i think its not a fixedDialog property.
-- modified at 7:14 Thursday 17th August, 2006
|
|
|
|
|
Hello
1- Make a new "Setup Project".
Set the prerequisites from the settings of your setup project to include .Net framework
Check the "... same location as my application" radiobutton below.
2- Even if you make the BorderFrameStyle Fixed, you have to remove the maximize button from the title bar to prevent maximizing -MaximizeButton = false; -. And dialogs can not be maximized;)
Regards
|
|
|
|
|
but it just start downloading. i want .net framework to embed into the setup file. i have Dotnetfx.exe which is version 2.0. what should i do?
thanks
|
|
|
|
|
hamidreza_buddy wrote: what should i do?
Do some research.
[Hint: Try using NSIS and don't embed dotnetfx, just reference the file (makes the installer smaller), if the file doesn't exist (i.e. someone downloaded your installer, then provide the option to download it from MSDN]
Formula 1 - Short for "F1 Racing" - named after the standard "help" key in Windows, it's a sport where participants desperately search through software help files trying to find actual documentation. It's tedious and somewhat cruel, most matches ending in a draw as no participant is able to find anything helpful. - Shog9
Ed
|
|
|
|
|
Hello
I told you to set the location to "same location as my application". This way when you compile your program the setup project will make a subfolder for each prerequisite inside the output folder.
Regards
|
|
|
|
|
Hi all,
I'm very new to socket programming, this will probably come across in my question!
One of our partners provides a service to us over TCP/IP sockets. We can send them data over any number of sockets, while we're supposed to keep one socket open to receive data from them.
I have done the first part ok (us sending data to them), I can connect, login (a requirement of the service) and send them data, but I am struggling to set up the part where we receive. I want to create a Windows Service (although I'm testing with a console app) with a socket set to 'listen' (I think?!), which seems to be a bit more complicated.
The code is use to connect to send data looks like this (IP, port, username and password are all dummy values):
Socket mySocket, sServer = "1.1.1.1";
int iPort = 800;
IPHostEntry hostEntry = Dns.Resolve(sServer);
IPAddress[] ipAddresses = hostEntry.AddressList;
IPEndPoint hostEndPoint = new IPEndPoint(ipAddresses[0], iPort);
mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Connect
mySocket.Connect(hostEndPoint);
if (mySocket.Connected)
{
Encoding ASCII = Encoding.ASCII;
string sLogin = "open tx username password\n";
byte[] bytLogin = ASCII.GetBytes(sLogin);
byte[] bytRec = new byte[256];
mySocket.Send(bytLogin, bytLogin.Length, 0);
int iRec = mySocket.Receive(bytRec, bytRec.Length, 0);
string sRec = ASCII.GetString(bytRec, 0, iRec);
if (sRec == "OK\n")
{
//Successfully logged in.
}
}
Is anyone able to point me in the right direction. I'm thinking that maybe I should be using the Listen() method of the Socket class, but I'm really not sure. If I try to call that after logging in as above I get the exception, "The requested address is not valid in its context".
Any help would be greatly appreciated! Thanks,
Toby
|
|
|
|
|
PS Apologies, the error I actually get is, "A connect request was made on an already connected socket".
|
|
|
|
|
Look into BeginReceive / BeginRead async methods of the socket class. These are event driven. Once you have logged in and established connectivity to their server, call beginrecieve. You can pass this a delegate to call as soon as data starts arriving, and in the meantime, you can send data down the same socket.
If you want more info, I can post some snippets tonight.... (now + about 8 hours).
Regards
Malc
*********************************************
|
|
|
|
|
Malc,
Great, thanks for that, I shall have a look at those methods and see if I can get any further. If it's no trouble to post that code later then please do - there's every chance I'll still be confused tonight, and even if not it would be good to see a working example.
Thanks again,
Toby
|
|
|
|
|
Hi,
If you want to receive data through sockets you can write a code like this one:
<code>
Socket tcpListener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
m_tcpListener.Bind(new IPEndPoint(IPAddress.Any,<Port Number>));
m_tcpListener.Listen(<number of max connections>);
Socket client = m_tcpListener.AcceptSocket();
byte []buffer = new byte[1024];
int read = 0;
string message = "";
while ((read = client.Receive(buffer)) != 0)
{
message = String.Concat(message,Encoding.ASCII.GetString(buffer,0,read));
if (read < buffer.Length)
break;
}
</code>
This example read a message from a client socket. Inside the while structure you read the entire message (even if it's larger than 1KB).
Hope it helps.
Do your best to be the best
|
|
|
|
|
Hi,
And thanks for the suggestion, much appreciated. Do you know if I could incorporate my login bit into that? Something like the bit that starts:
string sLogin = "open tx username password\n";
in my original post? I need to do this to listen as well, but am not sure at which stage I would do so?
Cheers,
Toby
|
|
|
|
|
Hi,
The only thing that matters is that through sockets you have to send a byte array. It doesn't matter what that array contains. All that is important is that you must know what you are reading and in what order.
Do your best to be the best
|
|
|
|
|
Hi All
I am trying to make an application like MS Paint, and I don't know how to converting the drawings in my graphics object into an image and save it on the hard disk
is there anybody can help?
thx
|
|
|
|
|
Your graphics object can only be drawn to if it contains an Image or Bitmap, and the Bitmap class has a Save method to save it to disc.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
is this right way to bind data with texboxes when you use classes,i mean i need to display data on labels.
private void btnGo_Click(object sender, System.EventArgs e)
{
try
{
SearchCustomers search = new SearchCustomers();
string Barcode1;
string CustomerName="" ;
string Barcode;
string ProductName="";
string Price = "";
search.CustomerName = "jakes";
if(txtBarcode.Text.Length <4)
{
Barcode1 =txtBarcode.Text;
lblCustomerName.Text = CustomerName;
search.SeachCustomer( CustomerName, Barcode1);
}
else
{
Barcode = txtBarcode.Text;
lblProductName.Text = ProductName;
lblPrice.Text =Price;
search.SeachProduct(Barcode, ProductName, Price);
|
|
|
|
|
Hi, Every One
Kindly let me know that,, which is best? C# Expres Edition? OR C# Professional Edition?
|
|
|
|
|
Well, one is free. So, which do you think is better ?
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Hello
Depends on what you want to do with it
Regards
Oh! BTW: Sure the Pro is better;)
|
|
|
|
|
|
Hello,
This is what I'm trying to do.
Get the public folders out of each Exchange Server (that is visible through the Exchange System Manager). As the select * from exchange_PublicFolder only shows the folders at the highest level and not per storage group I looking at the ADSI approach.
this is the code so far. Parts have been commented out as I'm testing this new part with ADSI.
<br />
try<br />
{<br />
string cServername;<br />
ManagementObjectCollection mcExchange=queryServer(".","select * from Exchange_Server");<br />
txtNoOfServers.Text=mcExchange.Count.ToString();<br />
foreach(ManagementObject moExchange in mcExchange)<br />
{<br />
cServername = moExchange["Name"].ToString();<br />
<br />
<br />
<br />
string[] SQLArray=new string[7];<br />
<br />
SQLArray[0]="select * from Exchange_Mailbox where size <=10240";<br />
SQLArray[1]="select * from Exchange_Mailbox where size >" + 10240 + " and size <=" + 5*10240;<br />
SQLArray[2]="select * from Exchange_Mailbox where size >" + 5*10240 + " and size <=" + 10*10240;<br />
SQLArray[3]="select * from Exchange_Mailbox where size >" + 10*10240 + " and size <=" + 25*10240;<br />
SQLArray[4]="select * from Exchange_Mailbox where size >" + 25*10240 + " and size <=" + 50*10240;<br />
SQLArray[5]="select * from Exchange_Mailbox where size >" + 50*10240 + " and size <=" + 100*10240;<br />
SQLArray[6]="select * from Exchange_Mailbox where size >" + 100*10240;<br />
txtMB.Text=queryServer(cServername,"select * from Exchange_Mailbox").Count.ToString();<br />
int[] MBSizesArray= new int[7];<br />
lstMBSizes.Items.Add(cServername);<br />
for (int i=0;i<7;i++)<br />
{<br />
MBSizesArray[i]=queryServer(cServername,SQLArray[i]).Count;<br />
lstMBSizes.Items.Add(MBSizesArray[i].ToString());<br />
}<br />
DirectoryEntry rootdse=new DirectoryEntry("LDAP://RootDSE");<br />
DirectoryEntry cfg=new DirectoryEntry("LDAP://"+rootdse.Properties["configurationnamingcontext"].Value);<br />
DirectorySearcher cfgsearch=new DirectorySearcher(cfg);<br />
cfgsearch.Filter="(&(objectCategory=msExchExchangeServer)cn="+cServername +")";<br />
cfgsearch.PropertiesToLoad.Add("distinguishedName");<br />
cfgsearch.SearchScope=SearchScope.Subtree;<br />
SearchResult res=cfgsearch.FindOne();<br />
SearchResultCollection resStorageGroups=searchContainer(res.Properties["distinguishedName"][0].ToString(),"&(objectCategory=msExchStorageGroup)");<br />
<br />
foreach (SearchResult sg in resStorageGroups)<br />
{<br />
SearchResultCollection resMailboxes=searchContainer(sg.Properties["distinguishedName"][0].ToString(),"&(objectCategory=msExchPrivateMDB)");<br />
foreach(SearchResult mb in resMailboxes)<br />
{<br />
<br />
<br />
}<br />
<br />
}<br />
<br />
<br />
<br />
DateTime startTime=new DateTime(System.DateTime.Now.Year,System.DateTime.Now.Month,System.DateTime.Now.Day-1);<br />
DateTime endTime=startTime.AddHours(24);<br />
<br />
string sTime=startTime.ToString("yyyyMMdd")+ "000000.000000+000";<br />
string eTime=endTime.ToString("yyyyMMdd")+ "000000.000000+000";<br />
<br />
<br />
ManagementObjectCollection mc=queryServer(cServername,"select * from Exchange_MessageTrackingEntry where Timelogged>='" + sTime + "' and TimeLogged<'" + eTime+"'");<br />
txtMailVolumeMsg.Text=mc.Count.ToString();<br />
Double ttlSize=0;<br />
foreach(ManagementObject mo in mc)<br />
{<br />
ttlSize+=Convert.ToDouble(mo["Size"])/(1024*1024); <br />
}<br />
txtMailVolumeMB.Text=ttlSize.ToString();<br />
<br />
<br />
<br />
<br />
<br />
<br />
}<br />
}<br />
catch (Exception ex)<br />
{<br />
MessageBox.Show(ex.ToString());<br />
}<br />
<br />
<br />
<br />
}<br />
<br />
private ManagementObjectCollection queryServer(string servername,string querystring)<br />
{<br />
try<br />
{<br />
System.Management.ConnectionOptions objconn = new System.Management.ConnectionOptions();<br />
objconn.Impersonation = System.Management.ImpersonationLevel.Impersonate;<br />
objconn.EnablePrivileges = true;<br />
System.Management.ManagementScope exmangescope = new System.Management.ManagementScope(@"\\" + servername + @"\root\MicrosoftExchangeV2",objconn);<br />
System.Management.ObjectQuery objquery = new System.Management.ObjectQuery(querystring);<br />
System.Management.ManagementObjectSearcher objsearch = new System.Management.ManagementObjectSearcher(exmangescope,objquery);<br />
return objsearch.Get();<br />
}<br />
catch (Exception e)<br />
{<br />
MessageBox.Show(e.ToString());<br />
return null;<br />
}<br />
}<br />
<br />
private SearchResultCollection searchContainer(string p,string fltr)<br />
{<br />
try<br />
{<br />
DirectoryEntry serverContainer=new DirectoryEntry("LDAP://"+p);<br />
DirectorySearcher serverSearch=new DirectorySearcher(serverContainer);<br />
serverSearch.Filter=fltr;<br />
serverSearch.SearchScope=SearchScope.Subtree;<br />
serverSearch.PropertiesToLoad.Add("cn");<br />
serverSearch.PropertiesToLoad.Add("distinguishedName");<br />
serverSearch.PropertiesToLoad.Add("homeMDBBL");<br />
SearchResultCollection result=serverSearch.FindAll();<br />
<br />
return result;<br />
}<br />
catch (Exception srcex)<br />
{<br />
MessageBox.Show(srcex.ToString());<br />
<br />
}<br />
}
msExchPrivateMDB is the name to select the mailbox data. I'm sure there must be one for public folders as well ?
Any help would be greatly appreciated.
|
|
|
|