|
I use .Net version 2.0. I recently implemented double buffering in an animation-heavy aspect of my application--instead of drawing directly to the screen I copy the screen to a Bitmap, use a graphics object to draw on the bitmap, and copy the bitmap back to the screen. It has made the animation faster and smoother. The code looks like this:
Bitmap offScreenBmp;
Graphics offScreenDC;
offScreenBmp = new Bitmap(this.Width, this.Height);
offScreenDC = Graphics.FromImage(offScreenBmp);
// I do drawing in offScreenDC
// I do drawing in offScreenDC
// I do drawing in offScreenDC
Graphics clientDC = this.CreateGraphics();
clientDC.DrawImage(offScreenBmp, 0, 0);
It works perfectly in most situations. However, if I use remote desktop to access a computer on which my application is running (which I often do) I notice that there is this awful white flicker that happens every time I copy my bitmap to the screen. The flicker occurs wherever my bitmap has been changed by its Graphics, and I assume it's some sort of clearing the screen action that happens before every copy, and it just happens too quickly for me to see when I'm not using RDP.
Does anyone know how to avoid this or turn it off? I would really like to keep using this new technique.
|
|
|
|
|
Basically i was told to write a file watcher.
what i need is a configuration files that edit the watch path inside the .exe application?
Get the previous time and date this application had run.
This is the code that i haven wrote so far. Also asking if anyone is willingly to be my personal mentor in coding.
<br />
public partial class frmNotifier : Form<br />
{<br />
private StringBuilder m_Sb;<br />
private bool m_bDirty;<br />
private System.IO.FileSystemWatcher m_Watcher;<br />
private bool m_bIsWatching;<br />
<br />
<br />
public frmNotifier()<br />
{<br />
InitializeComponent();<br />
m_Sb = new StringBuilder();<br />
m_bDirty = false;<br />
m_bIsWatching = false;<br />
<br />
<br />
<br />
<br />
RegistryKey rkApp = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);<br />
rkApp.SetValue("MyApp", Application.ExecutablePath.ToString());<br />
<br />
}<br />
<br />
private void frmNotifier_Load(object sender, EventArgs e)<br />
{<br />
string date,time;<br />
date =DateTime.Now.ToString("dd/MM/yyyy");<br />
time = DateTime.Now.ToString("hh:mm:sstt");<br />
<br />
lstNotification.Items.Add("Program executed at: " + date+" , " + time);<br />
<br />
m_bIsWatching = true;<br />
m_Watcher = new System.IO.FileSystemWatcher();<br />
m_Watcher.Filter = "*.*";<br />
m_Watcher.Path = "D:\\TEMP\\";<br />
m_Watcher.IncludeSubdirectories = true;<br />
m_Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite<br />
| NotifyFilters.FileName | NotifyFilters.DirectoryName;<br />
m_Watcher.Changed += new FileSystemEventHandler(OnChanged);<br />
m_Watcher.Created += new FileSystemEventHandler(OnChanged);<br />
m_Watcher.Deleted += new FileSystemEventHandler(OnChanged);<br />
m_Watcher.Renamed += new RenamedEventHandler(OnRenamed);<br />
m_Watcher.EnableRaisingEvents = true;<br />
<br />
}<br />
<br />
<br />
private void OnChanged(object sender, FileSystemEventArgs e)<br />
{<br />
<br />
if (!m_bDirty)<br />
{<br />
m_Sb.Remove(0, m_Sb.Length);<br />
m_Sb.Append(e.FullPath);<br />
m_Sb.Append(" ");<br />
m_Sb.Append(e.ChangeType.ToString());<br />
m_Sb.Append(" ");<br />
m_Sb.Append(DateTime.Now.ToString());<br />
m_bDirty = true;<br />
}<br />
}<br />
<br />
private void OnRenamed(object sender, RenamedEventArgs e)<br />
{<br />
if (!m_bDirty)<br />
{<br />
m_Sb.Remove(0, m_Sb.Length);<br />
m_Sb.Append(e.OldFullPath);<br />
m_Sb.Append(" ");<br />
m_Sb.Append(e.ChangeType.ToString());<br />
m_Sb.Append(" ");<br />
m_Sb.Append("to ");<br />
m_Sb.Append(e.Name);<br />
m_Sb.Append(" ");<br />
m_Sb.Append(DateTime.Now.ToString());<br />
m_bDirty = true;<br />
<br />
}<br />
}<br />
<br />
private void tmrEditNotify_Tick(object sender, EventArgs e)<br />
{<br />
if (m_bDirty)<br />
{<br />
lstNotification.BeginUpdate();<br />
lstNotification.Items.Add(m_Sb.ToString());<br />
lstNotification.EndUpdate();<br />
m_bDirty = false;<br />
}<br />
}<br />
<br />
<br />
<br />
<br />
<br />
<br />
private void frmNotifier_Resize(object sender, EventArgs e)<br />
{<br />
if (this.WindowState == FormWindowState.Minimized)<br />
{
if (this.WindowState == FormWindowState.Minimized)
{
Hide();
FileChangeWatcher.Visible = true;
Thread.Sleep(1000);
}<br />
<br />
}<br />
}<br />
<br />
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)<br />
{<br />
Show();
this.WindowState = FormWindowState.Normal;
FileChangeWatcher.Visible = false;
}<br />
<br />
private void frmNotifier_FormClosing(object sender, FormClosingEventArgs e)<br />
{<br />
m_bIsWatching = false;<br />
m_Watcher.EnableRaisingEvents = false;<br />
m_Watcher.Dispose();<br />
<br />
string date, time,date1,time1;<br />
<br />
date =DateTime.Now.ToString("ddMMyyyy");<br />
time = DateTime.Now.ToString("hhmm tt");<br />
<br />
if (Directory.Exists("c:\\FileChangeLog"))<br />
{<br />
<br />
<br />
<br />
}<br />
else {<br />
Directory.CreateDirectory("C:\\FileChangeLog");<br />
}<br />
<br />
<br />
StreamWriter sw = new StreamWriter(@"c:\FileChangeLog\" + date + "@" + time + "log.txt");<br />
<br />
date1 = DateTime.Now.ToString("dd/MM/yyyy");<br />
time1 = DateTime.Now.ToString("hh:mm:ss:tt");<br />
lstNotification.Items.Add("Program ended at: " + date1 + " , " + time1);<br />
<br />
foreach (string sItem in lstNotification.Items)<br />
{<br />
sw.WriteLine(sItem);<br />
}<br />
sw.Close();<br />
}<br />
|
|
|
|
|
1) Read the bit at the top of the page: "How to get an answer".
2) Don't post your entire app - no-one is going to read it.
3) If you post code, use the "code block" widget (or <pre> </pre> codes) to preserve the formatting. The difference is:
private void frmNotifier_FormClosing(object sender, FormClosingEventArgs e)<br />
{<br />
m_bIsWatching = false;<br />
m_Watcher.EnableRaisingEvents = false;<br />
m_Watcher.Dispose();<br />
<br />
string date, time,date1,time1;<br />
<br />
date =DateTime.Now.ToString("ddMMyyyy");<br />
time = DateTime.Now.ToString("hhmm tt");<br />
<br />
if (Directory.Exists("c:\\FileChangeLog"))<br />
{<br />
<br />
<br />
<br />
}<br />
else {<br />
Directory.CreateDirectory("C:\\FileChangeLog");<br />
}<br />
<br />
<br />
StreamWriter sw = new StreamWriter(@"c:\FileChangeLog\" + date + "@" + time + "log.txt");<br />
<br />
date1 = DateTime.Now.ToString("dd/MM/yyyy");<br />
time1 = DateTime.Now.ToString("hh:mm:ss:tt");<br />
lstNotification.Items.Add("Program ended at: " + date1 + " , " + time1);<br />
<br />
foreach (string sItem in lstNotification.Items)<br />
{<br />
sw.WriteLine(sItem);<br />
}<br />
sw.Close();<br />
} and
private void frmNotifier_FormClosing(object sender, FormClosingEventArgs e)
{
m_bIsWatching = false;
m_Watcher.EnableRaisingEvents = false;
m_Watcher.Dispose();
string date, time,date1,time1;
date = DateTime.Now.ToString("ddMMyyyy");
time = DateTime.Now.ToString("hhmm tt");
if (Directory.Exists("c:\\FileChangeLog"))
{
}
else
{
Directory.CreateDirectory("C:\\FileChangeLog");
}
StreamWriter sw = new StreamWriter(@"c:\FileChangeLog\" + date + "@" + time + "log.txt");
date1 = DateTime.Now.ToString("dd/MM/yyyy");
time1 = DateTime.Now.ToString("hh:mm:ss:tt");
lstNotification.Items.Add("Program ended at: " + date1 + " , " + time1);
foreach (string sItem in lstNotification.Items)
{
sw.WriteLine(sItem);
}
sw.Close();
} Which would you rather read?
4) Be specific. What is your problem, not "some-one write it for me".
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
The esteemed John Simmons has written a great FileSystemWatcher class. Read his article here[^].
Don't blame me. I voted for Chuck Norris.
|
|
|
|
|
Hi,
I need to write an automated C# code to send the emails to the distribution list of an exchange server .
I have tried with the SmtpClient class.But it was giving an error saying "Failure sending mail."
Plz help me on this,
Thanks in Advance,
Ravi.
|
|
|
|
|
See here.
Me, I'm dishonest. And a dishonest man you can always trust to be dishonest. Honestly. It's the honest ones you want to watch out for...
|
|
|
|
|
|
Hi,
I have ATL COM exe(out-of-proc) server which I want to use in c# .net client.
Somebody tell me how to use this in C#? I know how to use COM dll in C#. But I am not sure how to use out-of-proc in C# client?
|
|
|
|
|
Hi,
I am trying to write a windows service which is used to pull some data on the network(Intranet) for regular intervals (for every 30 minutes). but i am very new to this. i googled on the internet but i found all the samples on Service Account type=localsysatem but not the Network.
can any one give me some sample example how we can pull data on network?
even i just tried a sample to make a log entry with in the localsystem for every 5 minutes. but it makes any entry when you stop or start service manually but its not doing that automatically. even i set the property "SrartType" of serviceinstaller to 'Automatic'.
can any one please help me??
fttyhtrhyfytrytrysetyetytesystryrty
|
|
|
|
|
The account used doesn't change the code. All you're doing is tell the service which account to login to the system with. Since you're using network resources, this account would have to have permissions to those resources. LocalSystem doesn't have any permissions to anything off of, well, the Local System the service is running on, so it will not be able to get to any network shares or whatever.
What do you mean by "how we can pull data on network"? Where is the data coming from? What kind of server? Is there authentication involved? ...
|
|
|
|
|
Have your domain admins create a user specifically for this Service and use that.
yadlaprasad wrote: every 30 minutes
That may not be frequent enough to warrent a Windows Service. You could try a Scheduled Task and see how that works.
|
|
|
|
|
Hello all,
I would appreciate any help that can be given. I'm new to c# and mostly develop in c++. I'm using Microsoft Visual Studio 2010 as my IDE. My question is I'd like to ouput cars from a car collection. I'm using a 3rd party DLL library. As far as I know the dll has 2 classes. They are CarCollection and Car.
CarCollection has the following functions:
using System;
using System.Collections.Generic;
namespace CaraPartnersSdk
{
public class CarCollection
{
public CarCollection();
public IEnumerable<Car> FindByName(string name);
public Car GetByID(int id);
}
}
Car.cs:
using System;
using System.Collections.Generic;
namespace CaraPartnersSdk
{
public class Car
{
public Car();
public string AlternateForm { get; }
public Condition Condition { get; }
public IEnumerable<Car> ConnectsToCars { get; }
public bool HasBeenOpened { get; }
public int ID { get; }
public string Name { get; }
public string OptionalAttributesXml { get; }
public decimal Price { get; }
public string Set { get; }
public int Strength { get; }
}
}
All I'm trying to do is output each Car's name and ID which is in the dll. For now, I'm using a simple main class. I have no idea how to iterate through the CarCollection since it's not an array or actual collection. I'm doing CarCollection aCollection = new CarCollection(); When I use aCollection.FindByName() I get a message which does not help. After that I'm stumped. I know I have to use public IEnumerable<Car> FindByName(string name); from the CarCollection class but I have no idea how. I wish they passed the collection as an array because then I can do a simple for loop like
for(int i = 0; i
|
|
|
|
|
adrian564 wrote: I get a message which does not help
Can you post the message here?
Me, I'm dishonest. And a dishonest man you can always trust to be dishonest. Honestly. It's the honest ones you want to watch out for...
|
|
|
|
|
|
Hello all,
I would appreciate any help that can be given. I'm new to c# and mostly develop in c++. I'm using Microsoft Visual Studio 2010 as my IDE. My question is I'd like to ouput cars from a car collection. I'm using a 3rd party DLL library. As far as I know the dll has 2 classes. They are CarCollection and Car.
CarCollection has the following functions:
using System;
using System.Collections.Generic;
namespace CaraPartnersSdk
{
public class CarCollection
{
public CarCollection();
public IEnumerable<Car> FindByName(string name);
public Car GetByID(int id);
}
}
Car.cs:
using System;
using System.Collections.Generic;
namespace CaraPartnersSdk
{
public class Car
{
public Car();
public string AlternateForm { get; }
public Condition Condition { get; }
public IEnumerable<Car> ConnectsToCars { get; }
public bool HasBeenOpened { get; }
public int ID { get; }
public string Name { get; }
public string OptionalAttributesXml { get; }
public decimal Price { get; }
public string Set { get; }
public int Strength { get; }
}
}
All I'm trying to do is output each Car's name and ID which is in the dll. For now, I'm using a simple main class. I have no idea how to iterate through the CarCollection since it's not an array or actual collection. I'm doing CarCollection aCollection = new CarCollection(); When I use aCollection.FindByName() I get a message which does not help. After that I'm stumped. I know I have to use public IEnumerable<Car> FindByName(string name); from the CarCollection class but I have no idea how. I wish they passed the collection as an array because then I can do a simple for loop like
for(int i = 0; i
{
collection(i).getName();
}
something like that, but I guess thats not the case. Please I would appreciate any help. Thanks.
-Adrian
|
|
|
|
|
hi,
this might be one of the way to solve it. you can use LINQ query to do it in a neat way
IEnumerable<string> carnames = from cars in car
select cars.name;
foreach(string cr in carnames)
{
//do whatever with cr
}
i feel linq is really a nice concept introduced.. infact i have become a fan of it.
in above u can specify the 'where' condition also as per your need..
Hope this helps u...
Regards
Samir
|
|
|
|
|
Hello,
I'm still really confused, so I tried this
IEnumerable<string> carnames = from cars in Car
select cars.name;
The error I get is error CS1936: Could not find an implementation of the query pattern for source type 'CaraPartnersSdk.Robot'. 'Select' not found.
I'm real confused I just want to print out the string name of the car. Please help.
Best,
Adrian
|
|
|
|
|
Hello,
I'm still really confused, so I tried this
<pre>
IEnumerable<string> carnames = from cars in Car
select cars.name;
</pre>
The error I get is error CS1936: Could not find an implementation of the query pattern for source type 'CaraPartnersSdk.Robot'. 'Select' not found.
I'm real confused I just want to print out the string name of the car. Please help.
Best,
Adrian
|
|
|
|
|
Anyone? any suggestions? Maybe a helpful book or website?
Thanks.
|
|
|
|
|
To enumerate an enumerator, all you need is a foreach statement.
I'm also assuming that FindByName can take a wildcard.
But, as you still haven't told us what error you were getting, we still don't know!
modified on Wednesday, April 7, 2010 11:29 PM
|
|
|
|
|
Hi,
I have some hands on experience in developing .net web applications .Now i am thinking about developing components (Like charting components,HTML to pdf etc) which can be referenced in .net applications. For eg like the one mentioned in http://www.dotnetcharting.com/[^] . I know it will take time and effort to create stuff like that . But i want to the basic steps in developing components like this . Is these are com components? (C++) or can we develop the same in pure .net code?
Thanks
|
|
|
|
|
Hi all,
I am using Visual Studio 2005/2008, I tried to use the OpenFileDialog to open file.
But I would like to know what codes/settings do I need if I want to let the users only select one floder and all files in it would be opened?
Thanks very much!
modified on Monday, April 5, 2010 1:08 AM
|
|
|
|
|
Hi,
how about using the FolderBrowserDialog class to let the user choose a folder, then use Directory.GetFiles() to get a list of all files, and finally open those files in whatever way you think appropriate, either reading them yourself inside your app, or launching them with Process.Start()
|
|
|
|
|
Thanks Luc!!
It sounds link a good solution for me! However, I am really too lack experience in write such a program.. I got a warning of "No overload for method 'GetFiles' takes '0' arguments..
How can I resolve this?
|
|
|
|
|
whatever the problem is, there are three steps to a solution:
1. read the documentation (in this case, it will tell you GetFiles takes 1 or 2 or 3 parameters);
2. if that did not work, search the web, i.e. ask Google
3. and if that failed too, ask on a forum like CodeProject.
FYI: if you're new to programming language, or to programming in general, I strongly advice you to buy a book of your choice, and study it thoroughly. That will teach you the fundamentals, in a structured way, and at a much higher pace than you can achieve by experimenting and asking around.
|
|
|
|
|
Thanks =p
I would try to google more and search on the msdn page. My project is quite urgent that there would be no time for me to read a book =\
Thanks again Luc!
|
|
|
|
|
you're welcome.
|
|
|
|