|
Try overriding OnPaintBackground() with an empty method
(and remove it from OnPaint)
|
|
|
|
|
Thanks for your reply. But when I put the null OnPaintBackground on it, the foreground image has still been erased, only difference is that the background has not been painted.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
namespace GoldenEye
{
class ImageBox:ScrollableControl
{
private Image _image;
public Image image
{
set
{
_image = value;
UpdateScaleFactor();
Invalidate();
}
get
{
return _image;
}
}
private Matrix mx;
private float _zoom;
public float zoom
{
set
{
if (value < 0.00001f)
{
value = 0.00001f;
}
_zoom = value;
mx = new Matrix(_zoom, 0, 0, _zoom, 0, 0);
UpdateScaleFactor();
Invalidate();
}
get
{
return _zoom;
}
}
private void UpdateScaleFactor()
{
if (_image == null)
{
AutoScrollMargin = Size;
}
else
{
AutoScrollMinSize = new Size(Convert.ToInt32(_image.Width*_zoom+0.5), Convert.ToInt32(_image.Height*_zoom+0.5));
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
}
protected override void OnPaint(PaintEventArgs e)
{
if (_image == null)
{
return;
}
mx.Translate(AutoScrollPosition.X / _zoom, AutoScrollPosition.Y / _zoom);
e.Graphics.Transform = mx;
e.Graphics.InterpolationMode = InterpolationMode.High;
e.Graphics.DrawImage(_image, new Rectangle(0, 0, _image.Width, _image.Height), 0, 0, _image.Width, _image.Height, GraphicsUnit.Pixel);
base.OnPaint(e);
}
public ImageBox()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
UpdateStyles();
AutoScroll = true;
}
}
}
|
|
|
|
|
you're calling base.OnPaint() *AFTER* you do your custom painting. The base method will (among other things) call OnPaintBackground thus painting over everything you've already done. If you need to call the base method for some of your painting do it *BEFORE* your custom painting not *AFTER*.
Alternately if you only need to get the background painting from it, just call OnPaintBackground at the start of your method, and don't call the base at all.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots.
-- Robert Royall
|
|
|
|
|
Thanks to all the replies.
I know why this takes place. The OffsetX / OffsetY in the matrix has been changed.
Have a good day, gentlemen.
|
|
|
|
|
First. Please the the code block formatting. It preserves your indents to make the code readable.
garry.fang wrote: I am drafting a control which can zoom the image and scroll. But unfortunately, the background will erase the image. I do not know why.
Second, you appear to be misinformed about what PaintBackground does. It repaints the background of the entire control, including any areas which you have previously drawn a foreground object. If you wish to preserve them, any forground objects must be repainted after the PaintBackground call.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots.
-- Robert Royall
|
|
|
|
|
I want to run swf file from C# windows application. I am able to run .wav file but not .swf file.
Thanks
|
|
|
|
|
.swf isn't supported by windows media player and the .net media player classes share a common core with it.
I believe there's a flash playing COM object that gets installed with flash player automatically. You'll have to add a reference to it in your project and use it to play the file.
Today's lesson is brought to you by the word "niggardly". Remember kids, don't attribute to racism what can be explained by Scandinavian language roots.
-- Robert Royall
|
|
|
|
|
1.right click on toolbox at general select add new items
2.one popup is appeared with add references title select COM tab
3.select shock wave object
4.click on ok
5.u will find shock wave object on toolbox at general tab
6.now drag and drop ur flash object to windows form
then add below code
string path = System.Environment.CurrentDirectory;
path += @"\Top_1.swf";
axShockwaveFlash1.LoadMovie(0, path);
axShockwaveFlash1.Play();
Have a nice day
|
|
|
|
|
Hi all,
This is my first post.
I'm using "Infragistics.Excel v6.2" and C#.
I create an excel file using BIFFWriter.
I'm unable to hide teh grid lines in teh excel sheet through code.
Can anyone help me in this?
Thanks n Regards
Srividhya
|
|
|
|
|
You should probably be asking this on the Infragistics site, not here.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
hi everyone,
i am using firebird database and i want catch a message from firebird server. i am writing that code to catch info message but it is not giving me infomessage. i am looking for this problem on all web pages. but i did not find a knowledge.
is there a anyone to help me this subject i become happy.
private void Form1_Load(object sender, EventArgs e)
{
FbConnection baglanti = new FbConnection("DataSource = 192.168.2.99; Database = d:\\data\\vt.fdb; ConnectionTimeout = 20; UserID = SYSDBA; Password = sifre; PacketSize = 8192; Charset = WIN1254");
baglanti.InfoMessage += new FbInfoMessageEventHandler(baglanti_InfoMessage);
baglanti.Open();
FbTransaction trans = baglanti.BeginTransaction();
FbCommand sorgu = new FbCommand("insert into deneme (adi) values ('ee')",baglanti,trans);
sorgu.ExecuteNonQuery();
trans.Commit();
}
public static void baglanti_InfoMessage(object sender, FbInfoMessageEventArgs e)
{
MessageBox.Show(e.Errors[0].Message+e.Message);
}
|
|
|
|
|
According to the documentation[^] this event will only be raised if Firebird issues a warning message.
Are you expecting a warning message from the database?
|
|
|
|
|
i am waiting a knowledge message from database. i do not want a fail message from database. do you use this message before? is there a wrong part in my code block?
|
|
|
|
|
muhammedmustafa wrote: i am waiting a knowledge message from database.
What do you mean by a "knowledge message"?
muhammedmustafa wrote: i do not want a fail message from database
Nobody does. But the simple fact is that failures do occur and you have to be able to handle them gracefully when it happens.
The event you are handling is, according to the documentation, only used when an error of some description happens. If you have success the event won't need to be handled as there is no failure to deal with.
muhammedmustafa wrote: do you use this message before? is there a wrong part in my code block?
No never. It seems to me that I'm just reading the documentation on your behalf.
|
|
|
|
|
i am devloping a web application in which i have a gridview
contains two textbox as a template field.
i want to get the data filled in the gridview in the javascript function on the button click.
for the validation purpose so how can i do the same.
Thanks
|
|
|
|
|
You mention a Web App and JavaScript. You are aware that this is the C# forum, right?
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
I am new to C#.Net window application.
I have table categories where the following values are stored.
1 Software 0 0
2 Hardware 0 0
3 Electronics 0 0
4 Others 0 0
5 Adobe 1 0
6 Pen Drive 2 0
7 Adapter 3 0
8 C# 4 0
9 avast 1 0
10 Microsoft 1 0
11 avg 1 0
12 Cardreader 2 0
13 monitor 2 0
14 mobile 3 0
15 camera 3 0
16 Java 4 0
17 .Net 4 0
18 ad2001 5 0
19 ad2005 5 0
20 amkette 6 0
21 iball 6 0
22 ad#1 7 0
23 ad#2 7 0
24 vs2005 8 0
25 vs2008 8 0
NULL NULL NULL NULL
Now I want the tree view control which can be populated as I show it below:
Software
Adobe
ad2001
ad2008
avast
Microsoft
avg
Hardware
Pendrive
amkette
iball
Cardreader
monitor
Electronics
adaptor
ad#1
ad#2
mobile
camera
Others
C#
vs2005
vs2008
Java
.Net
You can see the relation between Cate and MC
The child node’s MC = Cate of Parent Node. I am finding problem to construct treeview in visual studio 2005 and C#.Net window application.
The Main Problem is :
1) How can we count the parent , child and grandchild node by firing query?
2) How can we add childnode at exact below its correct parent node?
3) How can we display the information in Listview from table for selected node?
Please help me on this topic and get bless from god! My project has to be completed in next 2 days. Please help me! Thanx In advance!
|
|
|
|
|
I wrote a code for this a month ago but now I do not remember it correctly. However, I'll try to explain
All you need a funtion and a generic list to hold all these values. eg.
public class ValuesHolder
{
public int ID;
public int ParentID;
public string Text;
public ValuesHolde(int id, int parentID, string text)
{
}
}
List<valuesholder> ValuesHolder_List = new List<valuesholder>();
ValuesHolder_List.Add(new ValuesHolde(id, parentID, text));
for (int a = 0; a < ValuesHolder_List.Count; a++)
{
if (ValuesHolder_List[a].ParentID == 0)
{
TV.Nodes.Add(ValuesHolder_List[a].ID, ValuesHolder_List[a].Text);
ValuesHolder_List.RemoveAt(a--);
}
}
while (ValuesHolder_List.Count != 0)
{
for (int a = 0; a < ValuesHolder_List.Count; a++)
{
TreeNode[] tns = TV.Nodes.Find(ValuesHolder_List[a].ParentID, true);
if (tns.Length > 0)
{
tns[0].Nodes.Add(ValuesHolder_List[a].ID, ValuesHolder_List[a].Text);
ValuesHolder_List.RemoveAt(a--);
}
}
}
I didn't test the code, but I'm sure it'll help you.
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
Hi,
How can a restricted user can access any of the blocked process like usb, cdrom..etc by the administrator
Thankyou
YPKI
|
|
|
|
|
ypki wrote: How can a restricted user can access any of the blocked process
They can't. They have to authenticate themselves as a user with sufficient privileges.
|
|
|
|
|
When you right click on the desktop you get a context menu that has something like that:
-----------------------
Arrange Icons By
Refresh
-----------------------
Paste
Paste Shortcut
-----------------------
New
-----------------------
Properties
-----------------------
I need to add a link to my application on Desktop's context menu. How can I accomplish that? What registry key do I need to modify/add to get my app icon listed on the desktop context menu?
E.g.:
---------------------------
Arrange Icons By >
Refresh
---------------------------
My App Link >
Paste
Paste Shortcut
---------------------------
New
---------------------------
Properties
---------------------------
Please help. Thanks.
|
|
|
|
|
Hi,
There are several ways to do it, here is one using the RegistryKey classes:
you would need admin privileges to do this.
modified on Friday, April 10, 2009 9:34 AM
|
|
|
|
|
Thanks
i am already know this that. but i want to know how to add shortcut on desktop context menu, so that whenever user perform right click on desktop, my application's shortcut should be visible. please help me
|
|
|
|
|
I am unaware of a registry key supporting the desktop context menu.
There must be ways to do it programmatically, sending some Windows messages to the desktop Window,
it is a simple ListView after all. However I don't know any details, never saw it, never needed it.
|
|
|
|
|
Hi,
How can I call one event in another event, like I want to call form click event into form load.
what should i do for this issue.
Please do replay
|
|
|
|